From 9a0d47e7a763339981c72a60afaed52c874ce9c7 Mon Sep 17 00:00:00 2001
From: Gerrit
Date: Tue, 29 Sep 2026 15:27:51 +0200
Subject: [PATCH 1/4] Improvements for memberships.
---
doc/index.html | 141 ++++++++++++++++++++++-
generate/generate.go | 7 ++
go/metalstack/api/v2/project.pb.go | 103 +++++++++--------
go/metalstack/cli/v2/project.pb.go | 139 ++++++++++++++++++++++
go/metalstack/cli/v2/tenant.pb.go | 139 ++++++++++++++++++++++
js/metalstack/api/v2/project_pb.d.ts | 15 ++-
js/metalstack/api/v2/project_pb.js | 2 +-
js/metalstack/api/v2/project_pb.ts | 14 ++-
js/metalstack/cli/v2/project_pb.d.ts | 31 +++++
js/metalstack/cli/v2/project_pb.js | 15 +++
js/metalstack/cli/v2/project_pb.ts | 45 ++++++++
js/metalstack/cli/v2/tenant_pb.d.ts | 31 +++++
js/metalstack/cli/v2/tenant_pb.js | 16 +++
js/metalstack/cli/v2/tenant_pb.ts | 46 ++++++++
proto/metalstack/api/v2/project.proto | 9 +-
proto/metalstack/cli/v2/project.proto | 14 +++
proto/metalstack/cli/v2/tenant.proto | 15 +++
python/Makefile | 1 +
python/metalstack/api/v2/project_pb2.py | 40 +++----
python/metalstack/api/v2/project_pb2.pyi | 10 +-
python/metalstack/cli/__init__.py | 0
python/metalstack/cli/v2/__init__.py | 0
python/metalstack/cli/v2/project_pb2.py | 41 +++++++
python/metalstack/cli/v2/project_pb2.pyi | 16 +++
python/metalstack/cli/v2/tenant_pb2.py | 42 +++++++
python/metalstack/cli/v2/tenant_pb2.pyi | 17 +++
26 files changed, 865 insertions(+), 84 deletions(-)
create mode 100644 go/metalstack/cli/v2/project.pb.go
create mode 100644 go/metalstack/cli/v2/tenant.pb.go
create mode 100644 js/metalstack/cli/v2/project_pb.d.ts
create mode 100644 js/metalstack/cli/v2/project_pb.js
create mode 100644 js/metalstack/cli/v2/project_pb.ts
create mode 100644 js/metalstack/cli/v2/tenant_pb.d.ts
create mode 100644 js/metalstack/cli/v2/tenant_pb.js
create mode 100644 js/metalstack/cli/v2/tenant_pb.ts
create mode 100644 proto/metalstack/cli/v2/project.proto
create mode 100644 proto/metalstack/cli/v2/tenant.proto
create mode 100644 python/metalstack/cli/__init__.py
create mode 100644 python/metalstack/cli/v2/__init__.py
create mode 100644 python/metalstack/cli/v2/project_pb2.py
create mode 100644 python/metalstack/cli/v2/project_pb2.pyi
create mode 100644 python/metalstack/cli/v2/tenant_pb2.py
create mode 100644 python/metalstack/cli/v2/tenant_pb2.pyi
diff --git a/doc/index.html b/doc/index.html
index d57f5f76..caa4f341 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -2687,6 +2687,36 @@ Table of Contents
+
+ metalstack/cli/v2/project.proto
+
+
+
+
+
+ metalstack/cli/v2/tenant.proto
+
+
+
+
metalstack/infra/v2/bmc.proto
@@ -16094,9 +16124,9 @@ ProjectServiceRemoveMemberResponse is the response payload to a remove member request.
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | project_member |
+ ProjectMember |
+ |
+ ProjectMember is the removed project member. |
+
+
+
+
+
+
@@ -21856,6 +21903,96 @@ UserService
+
+
metalstack/cli/v2/project.proto
Top
+
+
+
+
+ ProjectMember
+ ProjectMember defines a user that participates in a project.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | project |
+ string |
+ |
+ project is the project id to which the member belongs. |
+
+
+
+ | project_member |
+ metalstack.api.v2.ProjectMember |
+ |
+ ProjectMember is the project member. |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
metalstack/cli/v2/tenant.proto
Top
+
+
+
+
+ TenantMember
+ TenantMember defines a user that participates in a tenant.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | tenant |
+ string |
+ |
+ tenant is the login tenant to which the member belongs. |
+
+
+
+ | tenant_member |
+ metalstack.api.v2.TenantMember |
+ |
+ TenantMember is the tenant member. |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
metalstack/infra/v2/bmc.proto
Top
diff --git a/generate/generate.go b/generate/generate.go
index 24d0d4d1..388e4944 100644
--- a/generate/generate.go
+++ b/generate/generate.go
@@ -278,6 +278,13 @@ func svcs(root string) (map[string]api, error) {
_, name, _ := strings.Cut(*fd.Package, "metalstack.")
name = strings.ReplaceAll(name, ".", "")
+ switch name {
+ case "cliv2":
+ continue
+ default:
+ // noop
+ }
+
a, ok := result[name]
if !ok {
a = api{
diff --git a/go/metalstack/api/v2/project.pb.go b/go/metalstack/api/v2/project.pb.go
index 61fba4c8..28dbbf5b 100644
--- a/go/metalstack/api/v2/project.pb.go
+++ b/go/metalstack/api/v2/project.pb.go
@@ -1378,8 +1378,8 @@ func (x *ProjectServiceAddMemberRequest) GetRole() ProjectRole {
// ProjectServiceAddMemberResponse is the response payload for the add member request.
type ProjectServiceAddMemberResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // ProjectRole is the added project member.
- ProjectMember ProjectRole `protobuf:"varint,1,opt,name=project_member,json=projectMember,proto3,enum=metalstack.api.v2.ProjectRole" json:"project_member,omitempty"`
+ // ProjectMember is the added project member.
+ ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -1414,11 +1414,11 @@ func (*ProjectServiceAddMemberResponse) Descriptor() ([]byte, []int) {
return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{23}
}
-func (x *ProjectServiceAddMemberResponse) GetProjectMember() ProjectRole {
+func (x *ProjectServiceAddMemberResponse) GetProjectMember() *ProjectMember {
if x != nil {
return x.ProjectMember
}
- return ProjectRole_PROJECT_ROLE_UNSPECIFIED
+ return nil
}
// ProjectServiceRemoveMemberRequest is used to remove a member from a project.
@@ -1478,7 +1478,9 @@ func (x *ProjectServiceRemoveMemberRequest) GetMember() string {
// ProjectServiceRemoveMemberResponse is the response payload to a remove member request.
type ProjectServiceRemoveMemberResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // ProjectMember is the removed project member.
+ ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -1513,6 +1515,13 @@ func (*ProjectServiceRemoveMemberResponse) Descriptor() ([]byte, []int) {
return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{25}
}
+func (x *ProjectServiceRemoveMemberResponse) GetProjectMember() *ProjectMember {
+ if x != nil {
+ return x.ProjectMember
+ }
+ return nil
+}
+
// ProjectServiceUpdateMemberRequest is used to update a member of a project.
type ProjectServiceUpdateMemberRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -1915,13 +1924,14 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" +
"\x1eProjectServiceAddMemberRequest\x12\"\n" +
"\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12#\n" +
"\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n" +
- "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"h\n" +
- "\x1fProjectServiceAddMemberResponse\x12E\n" +
- "\x0eproject_member\x18\x01 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleR\rprojectMember\"_\n" +
+ "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"j\n" +
+ "\x1fProjectServiceAddMemberResponse\x12G\n" +
+ "\x0eproject_member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\rprojectMember\"_\n" +
"!ProjectServiceRemoveMemberRequest\x12\"\n" +
"\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" +
- "\x06member\x18\x02 \x01(\tR\x06member\"$\n" +
- "\"ProjectServiceRemoveMemberResponse\"\x9d\x01\n" +
+ "\x06member\x18\x02 \x01(\tR\x06member\"m\n" +
+ "\"ProjectServiceRemoveMemberResponse\x12G\n" +
+ "\x0eproject_member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\rprojectMember\"\x9d\x01\n" +
"!ProjectServiceUpdateMemberRequest\x12\"\n" +
"\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" +
"\x06member\x18\x02 \x01(\tR\x06member\x12<\n" +
@@ -2033,42 +2043,43 @@ var file_metalstack_api_v2_project_proto_depIdxs = []int32{
2, // 20: metalstack.api.v2.ProjectServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.ProjectInvite
2, // 21: metalstack.api.v2.ProjectServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
33, // 22: metalstack.api.v2.ProjectServiceAddMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
- 33, // 23: metalstack.api.v2.ProjectServiceAddMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectRole
- 33, // 24: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
- 1, // 25: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
- 3, // 26: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest
- 6, // 27: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest
- 8, // 28: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest
- 10, // 29: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest
- 12, // 30: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest
- 20, // 31: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest
- 22, // 32: metalstack.api.v2.ProjectService.AddMember:input_type -> metalstack.api.v2.ProjectServiceAddMemberRequest
- 24, // 33: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest
- 26, // 34: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest
- 14, // 35: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest
- 28, // 36: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest
- 30, // 37: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest
- 16, // 38: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest
- 18, // 39: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest
- 5, // 40: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse
- 7, // 41: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse
- 9, // 42: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse
- 11, // 43: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse
- 13, // 44: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse
- 21, // 45: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse
- 23, // 46: metalstack.api.v2.ProjectService.AddMember:output_type -> metalstack.api.v2.ProjectServiceAddMemberResponse
- 25, // 47: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse
- 27, // 48: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse
- 15, // 49: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse
- 29, // 50: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse
- 31, // 51: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse
- 17, // 52: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse
- 19, // 53: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse
- 40, // [40:54] is the sub-list for method output_type
- 26, // [26:40] is the sub-list for method input_type
- 26, // [26:26] is the sub-list for extension type_name
- 26, // [26:26] is the sub-list for extension extendee
- 0, // [0:26] is the sub-list for field type_name
+ 1, // 23: metalstack.api.v2.ProjectServiceAddMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
+ 1, // 24: metalstack.api.v2.ProjectServiceRemoveMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
+ 33, // 25: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
+ 1, // 26: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
+ 3, // 27: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest
+ 6, // 28: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest
+ 8, // 29: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest
+ 10, // 30: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest
+ 12, // 31: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest
+ 20, // 32: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest
+ 22, // 33: metalstack.api.v2.ProjectService.AddMember:input_type -> metalstack.api.v2.ProjectServiceAddMemberRequest
+ 24, // 34: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest
+ 26, // 35: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest
+ 14, // 36: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest
+ 28, // 37: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest
+ 30, // 38: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest
+ 16, // 39: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest
+ 18, // 40: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest
+ 5, // 41: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse
+ 7, // 42: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse
+ 9, // 43: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse
+ 11, // 44: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse
+ 13, // 45: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse
+ 21, // 46: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse
+ 23, // 47: metalstack.api.v2.ProjectService.AddMember:output_type -> metalstack.api.v2.ProjectServiceAddMemberResponse
+ 25, // 48: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse
+ 27, // 49: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse
+ 15, // 50: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse
+ 29, // 51: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse
+ 31, // 52: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse
+ 17, // 53: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse
+ 19, // 54: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse
+ 41, // [41:55] is the sub-list for method output_type
+ 27, // [27:41] is the sub-list for method input_type
+ 27, // [27:27] is the sub-list for extension type_name
+ 27, // [27:27] is the sub-list for extension extendee
+ 0, // [0:27] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_project_proto_init() }
diff --git a/go/metalstack/cli/v2/project.pb.go b/go/metalstack/cli/v2/project.pb.go
new file mode 100644
index 00000000..6c2ec658
--- /dev/null
+++ b/go/metalstack/cli/v2/project.pb.go
@@ -0,0 +1,139 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.12
+// protoc (unknown)
+// source: metalstack/cli/v2/project.proto
+
+package cliv2
+
+import (
+ _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
+ v2 "github.com/metal-stack/api/go/metalstack/api/v2"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// ProjectMember defines a user that participates in a project.
+type ProjectMember struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // project is the project id to which the member belongs.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // ProjectMember is the project member.
+ ProjectMember *v2.ProjectMember `protobuf:"bytes,2,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMember) Reset() {
+ *x = ProjectMember{}
+ mi := &file_metalstack_cli_v2_project_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMember) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMember) ProtoMessage() {}
+
+func (x *ProjectMember) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_cli_v2_project_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMember.ProtoReflect.Descriptor instead.
+func (*ProjectMember) Descriptor() ([]byte, []int) {
+ return file_metalstack_cli_v2_project_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ProjectMember) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectMember) GetProjectMember() *v2.ProjectMember {
+ if x != nil {
+ return x.ProjectMember
+ }
+ return nil
+}
+
+var File_metalstack_cli_v2_project_proto protoreflect.FileDescriptor
+
+const file_metalstack_cli_v2_project_proto_rawDesc = "" +
+ "\n" +
+ "\x1fmetalstack/cli/v2/project.proto\x12\x11metalstack.cli.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1fmetalstack/api/v2/project.proto\"|\n" +
+ "\rProjectMember\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12G\n" +
+ "\x0eproject_member\x18\x02 \x01(\v2 .metalstack.api.v2.ProjectMemberR\rprojectMemberB\xc2\x01\n" +
+ "\x15com.metalstack.cli.v2B\fProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\xa2\x02\x03MCX\xaa\x02\x11Metalstack.Cli.V2\xca\x02\x11Metalstack\\Cli\\V2\xe2\x02\x1dMetalstack\\Cli\\V2\\GPBMetadata\xea\x02\x13Metalstack::Cli::V2b\x06proto3"
+
+var (
+ file_metalstack_cli_v2_project_proto_rawDescOnce sync.Once
+ file_metalstack_cli_v2_project_proto_rawDescData []byte
+)
+
+func file_metalstack_cli_v2_project_proto_rawDescGZIP() []byte {
+ file_metalstack_cli_v2_project_proto_rawDescOnce.Do(func() {
+ file_metalstack_cli_v2_project_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_project_proto_rawDesc), len(file_metalstack_cli_v2_project_proto_rawDesc)))
+ })
+ return file_metalstack_cli_v2_project_proto_rawDescData
+}
+
+var file_metalstack_cli_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_metalstack_cli_v2_project_proto_goTypes = []any{
+ (*ProjectMember)(nil), // 0: metalstack.cli.v2.ProjectMember
+ (*v2.ProjectMember)(nil), // 1: metalstack.api.v2.ProjectMember
+}
+var file_metalstack_cli_v2_project_proto_depIdxs = []int32{
+ 1, // 0: metalstack.cli.v2.ProjectMember.project_member:type_name -> metalstack.api.v2.ProjectMember
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 1, // [1:1] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_metalstack_cli_v2_project_proto_init() }
+func file_metalstack_cli_v2_project_proto_init() {
+ if File_metalstack_cli_v2_project_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_project_proto_rawDesc), len(file_metalstack_cli_v2_project_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_metalstack_cli_v2_project_proto_goTypes,
+ DependencyIndexes: file_metalstack_cli_v2_project_proto_depIdxs,
+ MessageInfos: file_metalstack_cli_v2_project_proto_msgTypes,
+ }.Build()
+ File_metalstack_cli_v2_project_proto = out.File
+ file_metalstack_cli_v2_project_proto_goTypes = nil
+ file_metalstack_cli_v2_project_proto_depIdxs = nil
+}
diff --git a/go/metalstack/cli/v2/tenant.pb.go b/go/metalstack/cli/v2/tenant.pb.go
new file mode 100644
index 00000000..65313e26
--- /dev/null
+++ b/go/metalstack/cli/v2/tenant.pb.go
@@ -0,0 +1,139 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.12
+// protoc (unknown)
+// source: metalstack/cli/v2/tenant.proto
+
+package cliv2
+
+import (
+ _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
+ v2 "github.com/metal-stack/api/go/metalstack/api/v2"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// TenantMember defines a user that participates in a tenant.
+type TenantMember struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // tenant is the login tenant to which the member belongs.
+ Tenant string `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
+ // TenantMember is the tenant member.
+ TenantMember *v2.TenantMember `protobuf:"bytes,2,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMember) Reset() {
+ *x = TenantMember{}
+ mi := &file_metalstack_cli_v2_tenant_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMember) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMember) ProtoMessage() {}
+
+func (x *TenantMember) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_cli_v2_tenant_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMember.ProtoReflect.Descriptor instead.
+func (*TenantMember) Descriptor() ([]byte, []int) {
+ return file_metalstack_cli_v2_tenant_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *TenantMember) GetTenant() string {
+ if x != nil {
+ return x.Tenant
+ }
+ return ""
+}
+
+func (x *TenantMember) GetTenantMember() *v2.TenantMember {
+ if x != nil {
+ return x.TenantMember
+ }
+ return nil
+}
+
+var File_metalstack_cli_v2_tenant_proto protoreflect.FileDescriptor
+
+const file_metalstack_cli_v2_tenant_proto_rawDesc = "" +
+ "\n" +
+ "\x1emetalstack/cli/v2/tenant.proto\x12\x11metalstack.cli.v2\x1a\x1bbuf/validate/validate.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"y\n" +
+ "\fTenantMember\x12#\n" +
+ "\x06tenant\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12D\n" +
+ "\rtenant_member\x18\x02 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMemberB\xc1\x01\n" +
+ "\x15com.metalstack.cli.v2B\vTenantProtoP\x01Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\xa2\x02\x03MCX\xaa\x02\x11Metalstack.Cli.V2\xca\x02\x11Metalstack\\Cli\\V2\xe2\x02\x1dMetalstack\\Cli\\V2\\GPBMetadata\xea\x02\x13Metalstack::Cli::V2b\x06proto3"
+
+var (
+ file_metalstack_cli_v2_tenant_proto_rawDescOnce sync.Once
+ file_metalstack_cli_v2_tenant_proto_rawDescData []byte
+)
+
+func file_metalstack_cli_v2_tenant_proto_rawDescGZIP() []byte {
+ file_metalstack_cli_v2_tenant_proto_rawDescOnce.Do(func() {
+ file_metalstack_cli_v2_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_tenant_proto_rawDesc), len(file_metalstack_cli_v2_tenant_proto_rawDesc)))
+ })
+ return file_metalstack_cli_v2_tenant_proto_rawDescData
+}
+
+var file_metalstack_cli_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_metalstack_cli_v2_tenant_proto_goTypes = []any{
+ (*TenantMember)(nil), // 0: metalstack.cli.v2.TenantMember
+ (*v2.TenantMember)(nil), // 1: metalstack.api.v2.TenantMember
+}
+var file_metalstack_cli_v2_tenant_proto_depIdxs = []int32{
+ 1, // 0: metalstack.cli.v2.TenantMember.tenant_member:type_name -> metalstack.api.v2.TenantMember
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 1, // [1:1] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_metalstack_cli_v2_tenant_proto_init() }
+func file_metalstack_cli_v2_tenant_proto_init() {
+ if File_metalstack_cli_v2_tenant_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_tenant_proto_rawDesc), len(file_metalstack_cli_v2_tenant_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_metalstack_cli_v2_tenant_proto_goTypes,
+ DependencyIndexes: file_metalstack_cli_v2_tenant_proto_depIdxs,
+ MessageInfos: file_metalstack_cli_v2_tenant_proto_msgTypes,
+ }.Build()
+ File_metalstack_cli_v2_tenant_proto = out.File
+ file_metalstack_cli_v2_tenant_proto_goTypes = nil
+ file_metalstack_cli_v2_tenant_proto_depIdxs = nil
+}
diff --git a/js/metalstack/api/v2/project_pb.d.ts b/js/metalstack/api/v2/project_pb.d.ts
index 7fb60e0e..4f0ab575 100644
--- a/js/metalstack/api/v2/project_pb.d.ts
+++ b/js/metalstack/api/v2/project_pb.d.ts
@@ -624,11 +624,11 @@ export declare const ProjectServiceAddMemberRequestSchema: GenMessage & {
/**
- * ProjectRole is the added project member.
+ * ProjectMember is the added project member.
*
- * @generated from field: metalstack.api.v2.ProjectRole project_member = 1;
+ * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
*/
- projectMember: ProjectRole;
+ projectMember?: ProjectMember | undefined;
};
/**
* Describes the message metalstack.api.v2.ProjectServiceAddMemberResponse.
@@ -664,7 +664,14 @@ export declare const ProjectServiceRemoveMemberRequestSchema: GenMessage & {};
+export type ProjectServiceRemoveMemberResponse = Message<"metalstack.api.v2.ProjectServiceRemoveMemberResponse"> & {
+ /**
+ * ProjectMember is the removed project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
+ */
+ projectMember?: ProjectMember | undefined;
+};
/**
* Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse.
* Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/project_pb.js b/js/metalstack/api/v2/project_pb.js
index 64caf325..fa448bac 100644
--- a/js/metalstack/api/v2/project_pb.js
+++ b/js/metalstack/api/v2/project_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/project.proto.
*/
-export const file_metalstack_api_v2_project = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWQofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg5wcm9qZWN0X21lbWJlchgBIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlIk4KIVByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_project = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWwofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSJeCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlEjgKDnByb2plY3RfbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* Describes the message metalstack.api.v2.Project.
* Use `create(ProjectSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/project_pb.ts b/js/metalstack/api/v2/project_pb.ts
index 2a5d5daf..f4c5eaea 100644
--- a/js/metalstack/api/v2/project_pb.ts
+++ b/js/metalstack/api/v2/project_pb.ts
@@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/project.proto.
*/
export const file_metalstack_api_v2_project: GenFile = /*@__PURE__*/
- fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWQofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg5wcm9qZWN0X21lbWJlchgBIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlIk4KIVByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWwofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSJeCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlEjgKDnByb2plY3RfbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* Project defines a group of resources belonging to a tenant.
@@ -739,11 +739,11 @@ export const ProjectServiceAddMemberRequestSchema: GenMessage & {
/**
- * ProjectRole is the added project member.
+ * ProjectMember is the added project member.
*
- * @generated from field: metalstack.api.v2.ProjectRole project_member = 1;
+ * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
*/
- projectMember: ProjectRole;
+ projectMember?: ProjectMember | undefined;
};
/**
@@ -787,6 +787,12 @@ export const ProjectServiceRemoveMemberRequestSchema: GenMessage & {
+ /**
+ * ProjectMember is the removed project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
+ */
+ projectMember?: ProjectMember | undefined;
};
/**
diff --git a/js/metalstack/cli/v2/project_pb.d.ts b/js/metalstack/cli/v2/project_pb.d.ts
new file mode 100644
index 00000000..fd4ebcd9
--- /dev/null
+++ b/js/metalstack/cli/v2/project_pb.d.ts
@@ -0,0 +1,31 @@
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
+import type { ProjectMember as ProjectMember$1 } from "../../api/v2/project_pb";
+import type { Message } from "@bufbuild/protobuf";
+/**
+ * Describes the file metalstack/cli/v2/project.proto.
+ */
+export declare const file_metalstack_cli_v2_project: GenFile;
+/**
+ * ProjectMember defines a user that participates in a project.
+ *
+ * @generated from message metalstack.cli.v2.ProjectMember
+ */
+export type ProjectMember = Message<"metalstack.cli.v2.ProjectMember"> & {
+ /**
+ * project is the project id to which the member belongs.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * ProjectMember is the project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember project_member = 2;
+ */
+ projectMember?: ProjectMember$1 | undefined;
+};
+/**
+ * Describes the message metalstack.cli.v2.ProjectMember.
+ * Use `create(ProjectMemberSchema)` to create a new message.
+ */
+export declare const ProjectMemberSchema: GenMessage;
diff --git a/js/metalstack/cli/v2/project_pb.js b/js/metalstack/cli/v2/project_pb.js
new file mode 100644
index 00000000..2815888f
--- /dev/null
+++ b/js/metalstack/cli/v2/project_pb.js
@@ -0,0 +1,15 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/cli/v2/project.proto (package metalstack.cli.v2, syntax proto3)
+/* eslint-disable */
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import { file_metalstack_api_v2_project } from "../../api/v2/project_pb";
+/**
+ * Describes the file metalstack/cli/v2/project.proto.
+ */
+export const file_metalstack_cli_v2_project = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2NsaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmNsaS52MiJkCg1Qcm9qZWN0TWVtYmVyEhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjgKDnByb2plY3RfbWVtYmVyGAIgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlckLCAQoVY29tLm1ldGFsc3RhY2suY2xpLnYyQgxQcm9qZWN0UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9jbGkvdjI7Y2xpdjKiAgNNQ1iqAhFNZXRhbHN0YWNrLkNsaS5WMsoCEU1ldGFsc3RhY2tcQ2xpXFYy4gIdTWV0YWxzdGFja1xDbGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpDbGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_project]);
+/**
+ * Describes the message metalstack.cli.v2.ProjectMember.
+ * Use `create(ProjectMemberSchema)` to create a new message.
+ */
+export const ProjectMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_cli_v2_project, 0);
diff --git a/js/metalstack/cli/v2/project_pb.ts b/js/metalstack/cli/v2/project_pb.ts
new file mode 100644
index 00000000..aae9cffc
--- /dev/null
+++ b/js/metalstack/cli/v2/project_pb.ts
@@ -0,0 +1,45 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/cli/v2/project.proto (package metalstack.cli.v2, syntax proto3)
+/* eslint-disable */
+
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import type { ProjectMember as ProjectMember$1 } from "../../api/v2/project_pb";
+import { file_metalstack_api_v2_project } from "../../api/v2/project_pb";
+import type { Message } from "@bufbuild/protobuf";
+
+/**
+ * Describes the file metalstack/cli/v2/project.proto.
+ */
+export const file_metalstack_cli_v2_project: GenFile = /*@__PURE__*/
+ fileDesc("Ch9tZXRhbHN0YWNrL2NsaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmNsaS52MiJkCg1Qcm9qZWN0TWVtYmVyEhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjgKDnByb2plY3RfbWVtYmVyGAIgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlckLCAQoVY29tLm1ldGFsc3RhY2suY2xpLnYyQgxQcm9qZWN0UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9jbGkvdjI7Y2xpdjKiAgNNQ1iqAhFNZXRhbHN0YWNrLkNsaS5WMsoCEU1ldGFsc3RhY2tcQ2xpXFYy4gIdTWV0YWxzdGFja1xDbGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpDbGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_project]);
+
+/**
+ * ProjectMember defines a user that participates in a project.
+ *
+ * @generated from message metalstack.cli.v2.ProjectMember
+ */
+export type ProjectMember = Message<"metalstack.cli.v2.ProjectMember"> & {
+ /**
+ * project is the project id to which the member belongs.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * ProjectMember is the project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember project_member = 2;
+ */
+ projectMember?: ProjectMember$1 | undefined;
+};
+
+/**
+ * Describes the message metalstack.cli.v2.ProjectMember.
+ * Use `create(ProjectMemberSchema)` to create a new message.
+ */
+export const ProjectMemberSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_cli_v2_project, 0);
+
diff --git a/js/metalstack/cli/v2/tenant_pb.d.ts b/js/metalstack/cli/v2/tenant_pb.d.ts
new file mode 100644
index 00000000..c4e3d3e5
--- /dev/null
+++ b/js/metalstack/cli/v2/tenant_pb.d.ts
@@ -0,0 +1,31 @@
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
+import type { TenantMember as TenantMember$1 } from "../../api/v2/tenant_pb";
+import type { Message } from "@bufbuild/protobuf";
+/**
+ * Describes the file metalstack/cli/v2/tenant.proto.
+ */
+export declare const file_metalstack_cli_v2_tenant: GenFile;
+/**
+ * TenantMember defines a user that participates in a tenant.
+ *
+ * @generated from message metalstack.cli.v2.TenantMember
+ */
+export type TenantMember = Message<"metalstack.cli.v2.TenantMember"> & {
+ /**
+ * tenant is the login tenant to which the member belongs.
+ *
+ * @generated from field: string tenant = 1;
+ */
+ tenant: string;
+ /**
+ * TenantMember is the tenant member.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember tenant_member = 2;
+ */
+ tenantMember?: TenantMember$1 | undefined;
+};
+/**
+ * Describes the message metalstack.cli.v2.TenantMember.
+ * Use `create(TenantMemberSchema)` to create a new message.
+ */
+export declare const TenantMemberSchema: GenMessage;
diff --git a/js/metalstack/cli/v2/tenant_pb.js b/js/metalstack/cli/v2/tenant_pb.js
new file mode 100644
index 00000000..3d0a424c
--- /dev/null
+++ b/js/metalstack/cli/v2/tenant_pb.js
@@ -0,0 +1,16 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/cli/v2/tenant.proto (package metalstack.cli.v2, syntax proto3)
+/* eslint-disable */
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
+import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb";
+/**
+ * Describes the file metalstack/cli/v2/tenant.proto.
+ */
+export const file_metalstack_cli_v2_tenant = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2NsaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suY2xpLnYyImMKDFRlbmFudE1lbWJlchIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEjYKDXRlbmFudF9tZW1iZXIYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJCwQEKFWNvbS5tZXRhbHN0YWNrLmNsaS52MkILVGVuYW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9jbGkvdjI7Y2xpdjKiAgNNQ1iqAhFNZXRhbHN0YWNrLkNsaS5WMsoCEU1ldGFsc3RhY2tcQ2xpXFYy4gIdTWV0YWxzdGFja1xDbGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpDbGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
+/**
+ * Describes the message metalstack.cli.v2.TenantMember.
+ * Use `create(TenantMemberSchema)` to create a new message.
+ */
+export const TenantMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_cli_v2_tenant, 0);
diff --git a/js/metalstack/cli/v2/tenant_pb.ts b/js/metalstack/cli/v2/tenant_pb.ts
new file mode 100644
index 00000000..97acfb1e
--- /dev/null
+++ b/js/metalstack/cli/v2/tenant_pb.ts
@@ -0,0 +1,46 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/cli/v2/tenant.proto (package metalstack.cli.v2, syntax proto3)
+/* eslint-disable */
+
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
+import type { TenantMember as TenantMember$1 } from "../../api/v2/tenant_pb";
+import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb";
+import type { Message } from "@bufbuild/protobuf";
+
+/**
+ * Describes the file metalstack/cli/v2/tenant.proto.
+ */
+export const file_metalstack_cli_v2_tenant: GenFile = /*@__PURE__*/
+ fileDesc("Ch5tZXRhbHN0YWNrL2NsaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suY2xpLnYyImMKDFRlbmFudE1lbWJlchIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEjYKDXRlbmFudF9tZW1iZXIYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJCwQEKFWNvbS5tZXRhbHN0YWNrLmNsaS52MkILVGVuYW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9jbGkvdjI7Y2xpdjKiAgNNQ1iqAhFNZXRhbHN0YWNrLkNsaS5WMsoCEU1ldGFsc3RhY2tcQ2xpXFYy4gIdTWV0YWxzdGFja1xDbGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpDbGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
+
+/**
+ * TenantMember defines a user that participates in a tenant.
+ *
+ * @generated from message metalstack.cli.v2.TenantMember
+ */
+export type TenantMember = Message<"metalstack.cli.v2.TenantMember"> & {
+ /**
+ * tenant is the login tenant to which the member belongs.
+ *
+ * @generated from field: string tenant = 1;
+ */
+ tenant: string;
+
+ /**
+ * TenantMember is the tenant member.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember tenant_member = 2;
+ */
+ tenantMember?: TenantMember$1 | undefined;
+};
+
+/**
+ * Describes the message metalstack.cli.v2.TenantMember.
+ * Use `create(TenantMemberSchema)` to create a new message.
+ */
+export const TenantMemberSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_cli_v2_tenant, 0);
+
diff --git a/proto/metalstack/api/v2/project.proto b/proto/metalstack/api/v2/project.proto
index bdd425f1..64d4fd71 100644
--- a/proto/metalstack/api/v2/project.proto
+++ b/proto/metalstack/api/v2/project.proto
@@ -297,8 +297,8 @@ message ProjectServiceAddMemberRequest {
// ProjectServiceAddMemberResponse is the response payload for the add member request.
message ProjectServiceAddMemberResponse {
- // ProjectRole is the added project member.
- ProjectRole project_member = 1;
+ // ProjectMember is the added project member.
+ ProjectMember project_member = 1;
}
// ProjectServiceRemoveMemberRequest is used to remove a member from a project.
@@ -310,7 +310,10 @@ message ProjectServiceRemoveMemberRequest {
}
// ProjectServiceRemoveMemberResponse is the response payload to a remove member request.
-message ProjectServiceRemoveMemberResponse {}
+message ProjectServiceRemoveMemberResponse {
+ // ProjectMember is the removed project member.
+ ProjectMember project_member = 1;
+}
// ProjectServiceUpdateMemberRequest is used to update a member of a project.
message ProjectServiceUpdateMemberRequest {
diff --git a/proto/metalstack/cli/v2/project.proto b/proto/metalstack/cli/v2/project.proto
new file mode 100644
index 00000000..fa8c6ac1
--- /dev/null
+++ b/proto/metalstack/cli/v2/project.proto
@@ -0,0 +1,14 @@
+syntax = "proto3";
+
+package metalstack.cli.v2;
+
+import "buf/validate/validate.proto";
+import "metalstack/api/v2/project.proto";
+
+// ProjectMember defines a user that participates in a project.
+message ProjectMember {
+ // project is the project id to which the member belongs.
+ string project = 1 [(buf.validate.field).string.uuid = true];
+ // ProjectMember is the project member.
+ metalstack.api.v2.ProjectMember project_member = 2;
+}
diff --git a/proto/metalstack/cli/v2/tenant.proto b/proto/metalstack/cli/v2/tenant.proto
new file mode 100644
index 00000000..54b5d861
--- /dev/null
+++ b/proto/metalstack/cli/v2/tenant.proto
@@ -0,0 +1,15 @@
+syntax = "proto3";
+
+package metalstack.cli.v2;
+
+import "buf/validate/validate.proto";
+import "metalstack/api/v2/predefined_rules.proto";
+import "metalstack/api/v2/tenant.proto";
+
+// TenantMember defines a user that participates in a tenant.
+message TenantMember {
+ // tenant is the login tenant to which the member belongs.
+ string tenant = 1 [(buf.validate.field).string.(metalstack.api.v2.is_tenant_login) = true];
+ // TenantMember is the tenant member.
+ metalstack.api.v2.TenantMember tenant_member = 2;
+}
diff --git a/python/Makefile b/python/Makefile
index 68fe7118..da3fedcf 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -4,6 +4,7 @@ clean:
rm -rf metalstack/admin
rm -rf metalstack/api
rm -rf metalstack/infra
+ rm -rf metalstack/cli
.PHONY: generate
generate:
diff --git a/python/metalstack/api/v2/project_pb2.py b/python/metalstack/api/v2/project_pb2.py
index 618b4ecb..d817d371 100644
--- a/python/metalstack/api/v2/project_pb2.py
+++ b/python/metalstack/api/v2/project_pb2.py
@@ -28,7 +28,7 @@
from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/project.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xf2\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12/\n\navatar_url\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xf8\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x04meta\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"R\n\x19ProjectServiceListRequest\x12\x35\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryR\x05query\"\xe1\x01\n\x0cProjectQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12(\n\x06tenant\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\x83\x02\n\x1bProjectServiceCreateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x85\x03\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12/\n\navatar_url\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n\x1aProjectServiceLeaveRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x1d\n\x1bProjectServiceLeaveResponse\"\xa7\x01\n\x1eProjectServiceAddMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"h\n\x1fProjectServiceAddMemberResponse\x12\x45\n\x0eproject_member\x18\x01 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\rprojectMember\"_\n!ProjectServiceRemoveMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"$\n\"ProjectServiceRemoveMemberResponse\"\x9d\x01\n!ProjectServiceUpdateMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n\"ProjectServiceUpdateMemberResponse\x12G\n\x0eproject_member\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n!ProjectServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"a\n\"ProjectServiceInviteAcceptResponse\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12!\n\x0cproject_name\x18\x02 \x01(\tR\x0bprojectName\"_\n!ProjectServiceInviteDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"$\n\"ProjectServiceInviteDeleteResponse2\xe1\r\n\x0eProjectService\x12m\n\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12m\n\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.ProjectServiceCreateRequest\x1a/.metalstack.api.v2.ProjectServiceCreateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n\x06\x44\x65lete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12}\n\tAddMember\x12\x31.metalstack.api.v2.ProjectServiceAddMemberRequest\x1a\x32.metalstack.api.v2.ProjectServiceAddMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cRemoveMember\x12\x34.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cUpdateMember\x12\x34.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n\x0cInviteAccept\x12\x34.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x86\x01\n\x0cInviteDelete\x12\x34.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0bInvitesList\x12\x33.metalstack.api.v2.ProjectServiceInvitesListRequest\x1a\x34.metalstack.api.v2.ProjectServiceInvitesListResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12|\n\tInviteGet\x12\x31.metalstack.api.v2.ProjectServiceInviteGetRequest\x1a\x32.metalstack.api.v2.ProjectServiceInviteGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/project.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xf2\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12/\n\navatar_url\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xf8\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x04meta\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"R\n\x19ProjectServiceListRequest\x12\x35\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryR\x05query\"\xe1\x01\n\x0cProjectQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12(\n\x06tenant\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\x83\x02\n\x1bProjectServiceCreateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x85\x03\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12/\n\navatar_url\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n\x1aProjectServiceLeaveRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x1d\n\x1bProjectServiceLeaveResponse\"\xa7\x01\n\x1eProjectServiceAddMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"j\n\x1fProjectServiceAddMemberResponse\x12G\n\x0eproject_member\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\"_\n!ProjectServiceRemoveMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"m\n\"ProjectServiceRemoveMemberResponse\x12G\n\x0eproject_member\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\"\x9d\x01\n!ProjectServiceUpdateMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n\"ProjectServiceUpdateMemberResponse\x12G\n\x0eproject_member\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n!ProjectServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"a\n\"ProjectServiceInviteAcceptResponse\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12!\n\x0cproject_name\x18\x02 \x01(\tR\x0bprojectName\"_\n!ProjectServiceInviteDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"$\n\"ProjectServiceInviteDeleteResponse2\xe1\r\n\x0eProjectService\x12m\n\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12m\n\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.ProjectServiceCreateRequest\x1a/.metalstack.api.v2.ProjectServiceCreateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n\x06\x44\x65lete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12}\n\tAddMember\x12\x31.metalstack.api.v2.ProjectServiceAddMemberRequest\x1a\x32.metalstack.api.v2.ProjectServiceAddMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cRemoveMember\x12\x34.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cUpdateMember\x12\x34.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n\x0cInviteAccept\x12\x34.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x86\x01\n\x0cInviteDelete\x12\x34.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0bInvitesList\x12\x33.metalstack.api.v2.ProjectServiceInvitesListRequest\x1a\x34.metalstack.api.v2.ProjectServiceInvitesListResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12|\n\tInviteGet\x12\x31.metalstack.api.v2.ProjectServiceInviteGetRequest\x1a\x32.metalstack.api.v2.ProjectServiceInviteGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -171,23 +171,23 @@
_globals['_PROJECTSERVICEADDMEMBERREQUEST']._serialized_start=3285
_globals['_PROJECTSERVICEADDMEMBERREQUEST']._serialized_end=3452
_globals['_PROJECTSERVICEADDMEMBERRESPONSE']._serialized_start=3454
- _globals['_PROJECTSERVICEADDMEMBERRESPONSE']._serialized_end=3558
- _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3560
- _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3655
- _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3657
- _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3693
- _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3696
- _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3853
- _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3855
- _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3964
- _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3966
- _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=4025
- _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=4027
- _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=4124
- _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=4126
- _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=4221
- _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=4223
- _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=4259
- _globals['_PROJECTSERVICE']._serialized_start=4262
- _globals['_PROJECTSERVICE']._serialized_end=6023
+ _globals['_PROJECTSERVICEADDMEMBERRESPONSE']._serialized_end=3560
+ _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3562
+ _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3657
+ _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3659
+ _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3768
+ _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3771
+ _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3928
+ _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3930
+ _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=4039
+ _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=4041
+ _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=4100
+ _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=4102
+ _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=4199
+ _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=4201
+ _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=4296
+ _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=4298
+ _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=4334
+ _globals['_PROJECTSERVICE']._serialized_start=4337
+ _globals['_PROJECTSERVICE']._serialized_end=6098
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/project_pb2.pyi b/python/metalstack/api/v2/project_pb2.pyi
index 0f82ba19..fc60e720 100644
--- a/python/metalstack/api/v2/project_pb2.pyi
+++ b/python/metalstack/api/v2/project_pb2.pyi
@@ -217,8 +217,8 @@ class ProjectServiceAddMemberRequest(_message.Message):
class ProjectServiceAddMemberResponse(_message.Message):
__slots__ = ("project_member",)
PROJECT_MEMBER_FIELD_NUMBER: _ClassVar[int]
- project_member: _common_pb2.ProjectRole
- def __init__(self, project_member: _Optional[_Union[_common_pb2.ProjectRole, str]] = ...) -> None: ...
+ project_member: ProjectMember
+ def __init__(self, project_member: _Optional[_Union[ProjectMember, _Mapping]] = ...) -> None: ...
class ProjectServiceRemoveMemberRequest(_message.Message):
__slots__ = ("project", "member")
@@ -229,8 +229,10 @@ class ProjectServiceRemoveMemberRequest(_message.Message):
def __init__(self, project: _Optional[str] = ..., member: _Optional[str] = ...) -> None: ...
class ProjectServiceRemoveMemberResponse(_message.Message):
- __slots__ = ()
- def __init__(self) -> None: ...
+ __slots__ = ("project_member",)
+ PROJECT_MEMBER_FIELD_NUMBER: _ClassVar[int]
+ project_member: ProjectMember
+ def __init__(self, project_member: _Optional[_Union[ProjectMember, _Mapping]] = ...) -> None: ...
class ProjectServiceUpdateMemberRequest(_message.Message):
__slots__ = ("project", "member", "role")
diff --git a/python/metalstack/cli/__init__.py b/python/metalstack/cli/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/python/metalstack/cli/v2/__init__.py b/python/metalstack/cli/v2/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/python/metalstack/cli/v2/project_pb2.py b/python/metalstack/cli/v2/project_pb2.py
new file mode 100644
index 00000000..a306ba13
--- /dev/null
+++ b/python/metalstack/cli/v2/project_pb2.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
+# source: metalstack/cli/v2/project.proto
+# Protobuf Python Version: 7.36.1
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import runtime_version as _runtime_version
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 7,
+ 36,
+ 1,
+ '',
+ 'metalstack/cli/v2/project.proto'
+)
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
+from metalstack.api.v2 import project_pb2 as metalstack_dot_api_dot_v2_dot_project__pb2
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/cli/v2/project.proto\x12\x11metalstack.cli.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fmetalstack/api/v2/project.proto\"|\n\rProjectMember\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12G\n\x0eproject_member\x18\x02 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMemberB\xc2\x01\n\x15\x63om.metalstack.cli.v2B\x0cProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\xa2\x02\x03MCX\xaa\x02\x11Metalstack.Cli.V2\xca\x02\x11Metalstack\\Cli\\V2\xe2\x02\x1dMetalstack\\Cli\\V2\\GPBMetadata\xea\x02\x13Metalstack::Cli::V2b\x06proto3')
+
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'metalstack.cli.v2.project_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\025com.metalstack.cli.v2B\014ProjectProtoP\001Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\242\002\003MCX\252\002\021Metalstack.Cli.V2\312\002\021Metalstack\\Cli\\V2\342\002\035Metalstack\\Cli\\V2\\GPBMetadata\352\002\023Metalstack::Cli::V2'
+ _globals['_PROJECTMEMBER'].fields_by_name['project']._loaded_options = None
+ _globals['_PROJECTMEMBER'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
+ _globals['_PROJECTMEMBER']._serialized_start=116
+ _globals['_PROJECTMEMBER']._serialized_end=240
+# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/cli/v2/project_pb2.pyi b/python/metalstack/cli/v2/project_pb2.pyi
new file mode 100644
index 00000000..0c8e4420
--- /dev/null
+++ b/python/metalstack/cli/v2/project_pb2.pyi
@@ -0,0 +1,16 @@
+from buf.validate import validate_pb2 as _validate_pb2
+from metalstack.api.v2 import project_pb2 as _project_pb2
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from collections.abc import Mapping as _Mapping
+from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class ProjectMember(_message.Message):
+ __slots__ = ("project", "project_member")
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
+ PROJECT_MEMBER_FIELD_NUMBER: _ClassVar[int]
+ project: str
+ project_member: _project_pb2.ProjectMember
+ def __init__(self, project: _Optional[str] = ..., project_member: _Optional[_Union[_project_pb2.ProjectMember, _Mapping]] = ...) -> None: ...
diff --git a/python/metalstack/cli/v2/tenant_pb2.py b/python/metalstack/cli/v2/tenant_pb2.py
new file mode 100644
index 00000000..e685d825
--- /dev/null
+++ b/python/metalstack/cli/v2/tenant_pb2.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
+# source: metalstack/cli/v2/tenant.proto
+# Protobuf Python Version: 7.36.1
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import runtime_version as _runtime_version
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 7,
+ 36,
+ 1,
+ '',
+ 'metalstack/cli/v2/tenant.proto'
+)
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
+from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
+from metalstack.api.v2 import tenant_pb2 as metalstack_dot_api_dot_v2_dot_tenant__pb2
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/cli/v2/tenant.proto\x12\x11metalstack.cli.v2\x1a\x1b\x62uf/validate/validate.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"y\n\x0cTenantMember\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12\x44\n\rtenant_member\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMemberB\xc1\x01\n\x15\x63om.metalstack.cli.v2B\x0bTenantProtoP\x01Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\xa2\x02\x03MCX\xaa\x02\x11Metalstack.Cli.V2\xca\x02\x11Metalstack\\Cli\\V2\xe2\x02\x1dMetalstack\\Cli\\V2\\GPBMetadata\xea\x02\x13Metalstack::Cli::V2b\x06proto3')
+
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'metalstack.cli.v2.tenant_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\025com.metalstack.cli.v2B\013TenantProtoP\001Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\242\002\003MCX\252\002\021Metalstack.Cli.V2\312\002\021Metalstack\\Cli\\V2\342\002\035Metalstack\\Cli\\V2\\GPBMetadata\352\002\023Metalstack::Cli::V2'
+ _globals['_TENANTMEMBER'].fields_by_name['tenant']._loaded_options = None
+ _globals['_TENANTMEMBER'].fields_by_name['tenant']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001'
+ _globals['_TENANTMEMBER']._serialized_start=156
+ _globals['_TENANTMEMBER']._serialized_end=277
+# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/cli/v2/tenant_pb2.pyi b/python/metalstack/cli/v2/tenant_pb2.pyi
new file mode 100644
index 00000000..dc2c7b1a
--- /dev/null
+++ b/python/metalstack/cli/v2/tenant_pb2.pyi
@@ -0,0 +1,17 @@
+from buf.validate import validate_pb2 as _validate_pb2
+from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2
+from metalstack.api.v2 import tenant_pb2 as _tenant_pb2
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from collections.abc import Mapping as _Mapping
+from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class TenantMember(_message.Message):
+ __slots__ = ("tenant", "tenant_member")
+ TENANT_FIELD_NUMBER: _ClassVar[int]
+ TENANT_MEMBER_FIELD_NUMBER: _ClassVar[int]
+ tenant: str
+ tenant_member: _tenant_pb2.TenantMember
+ def __init__(self, tenant: _Optional[str] = ..., tenant_member: _Optional[_Union[_tenant_pb2.TenantMember, _Mapping]] = ...) -> None: ...
From 1a4849c6a846ff19f8990a490df00861ee006867 Mon Sep 17 00:00:00 2001
From: Gerrit
Date: Tue, 29 Sep 2026 15:48:32 +0200
Subject: [PATCH 2/4] Allow project and tenant primary key creation.
---
doc/index.html | 98 +++++++++++
go/metalstack/admin/v2/project.pb.go | 191 +++++++++++++++++++--
go/metalstack/admin/v2/tenant.pb.go | 21 ++-
js/metalstack/admin/v2/project_pb.d.ts | 67 ++++++++
js/metalstack/admin/v2/project_pb.js | 14 +-
js/metalstack/admin/v2/project_pb.ts | 82 ++++++++-
js/metalstack/admin/v2/tenant_pb.d.ts | 6 +
js/metalstack/admin/v2/tenant_pb.js | 2 +-
js/metalstack/admin/v2/tenant_pb.ts | 9 +-
proto/metalstack/admin/v2/project.proto | 24 +++
proto/metalstack/admin/v2/tenant.proto | 4 +-
python/metalstack/admin/v2/project_pb2.py | 30 +++-
python/metalstack/admin/v2/project_pb2.pyi | 24 +++
python/metalstack/admin/v2/tenant_pb2.py | 40 +++--
python/metalstack/admin/v2/tenant_pb2.pyi | 6 +-
15 files changed, 563 insertions(+), 55 deletions(-)
diff --git a/doc/index.html b/doc/index.html
index caa4f341..73ca7930 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1935,6 +1935,14 @@ Table of Contents
metalstack/admin/v2/project.proto
+ ProjectServiceCreateRequest
+ ProjectServiceCreateRequest is the request payload to Create a project.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | login |
+ string |
+ |
+ Login is the tenant of this project. |
+
+
+
+ | name |
+ string |
+ |
+ Name of this project, unique per tenant. |
+
+
+
+ | description |
+ string |
+ |
+ Description of this project. |
+
+
+
+ | avatar_url |
+ string |
+ optional |
+ Avatar URL of the project. |
+
+
+
+ | labels |
+ metalstack.api.v2.Labels |
+ |
+ Labels on the project. |
+
+
+
+ | project |
+ string |
+ optional |
+ Project is the uuid of the project. |
+
+
+
+
+
+
+
+
+
+ ProjectServiceCreateResponse
+ ProjectServiceCreateResponse is the response payload for creating a project.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | project |
+ metalstack.api.v2.Project |
+ |
+ Project contains the created project. |
+
+
+
+
+
+
+
+
+
ProjectServiceListRequest
ProjectServiceListRequest is the request payload for listing projects.
@@ -20603,6 +20694,13 @@ TenantServiceCreateReque
Labels on the tenant. |
+
+ | login |
+ string |
+ optional |
+ Login of the tenant. |
+
+
diff --git a/go/metalstack/admin/v2/project.pb.go b/go/metalstack/admin/v2/project.pb.go
index e00042f6..f171cc2e 100644
--- a/go/metalstack/admin/v2/project.pb.go
+++ b/go/metalstack/admin/v2/project.pb.go
@@ -7,6 +7,7 @@
package adminv2
import (
+ _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
v2 "github.com/metal-stack/api/go/metalstack/api/v2"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
@@ -114,16 +115,166 @@ func (x *ProjectServiceListResponse) GetProjects() []*v2.Project {
return nil
}
+// ProjectServiceCreateRequest is the request payload to Create a project.
+type ProjectServiceCreateRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Login is the tenant of this project.
+ Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
+ // Name of this project, unique per tenant.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // Description of this project.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // Avatar URL of the project.
+ AvatarUrl *string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl,proto3,oneof" json:"avatar_url,omitempty"`
+ // Labels on the project.
+ Labels *v2.Labels `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
+ // Project is the uuid of the project.
+ Project *string `protobuf:"bytes,6,opt,name=project,proto3,oneof" json:"project,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectServiceCreateRequest) Reset() {
+ *x = ProjectServiceCreateRequest{}
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectServiceCreateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectServiceCreateRequest) ProtoMessage() {}
+
+func (x *ProjectServiceCreateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectServiceCreateRequest.ProtoReflect.Descriptor instead.
+func (*ProjectServiceCreateRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_project_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ProjectServiceCreateRequest) GetLogin() string {
+ if x != nil {
+ return x.Login
+ }
+ return ""
+}
+
+func (x *ProjectServiceCreateRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ProjectServiceCreateRequest) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *ProjectServiceCreateRequest) GetAvatarUrl() string {
+ if x != nil && x.AvatarUrl != nil {
+ return *x.AvatarUrl
+ }
+ return ""
+}
+
+func (x *ProjectServiceCreateRequest) GetLabels() *v2.Labels {
+ if x != nil {
+ return x.Labels
+ }
+ return nil
+}
+
+func (x *ProjectServiceCreateRequest) GetProject() string {
+ if x != nil && x.Project != nil {
+ return *x.Project
+ }
+ return ""
+}
+
+// ProjectServiceCreateResponse is the response payload for creating a project.
+type ProjectServiceCreateResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project contains the created project.
+ Project *v2.Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectServiceCreateResponse) Reset() {
+ *x = ProjectServiceCreateResponse{}
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectServiceCreateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectServiceCreateResponse) ProtoMessage() {}
+
+func (x *ProjectServiceCreateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectServiceCreateResponse.ProtoReflect.Descriptor instead.
+func (*ProjectServiceCreateResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_project_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ProjectServiceCreateResponse) GetProject() *v2.Project {
+ if x != nil {
+ return x.Project
+ }
+ return nil
+}
+
var File_metalstack_admin_v2_project_proto protoreflect.FileDescriptor
const file_metalstack_admin_v2_project_proto_rawDesc = "" +
"\n" +
- "!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/project.proto\"a\n" +
+ "!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1fmetalstack/api/v2/project.proto\"a\n" +
"\x19ProjectServiceListRequest\x12:\n" +
"\x05query\x18\x01 \x01(\v2\x1f.metalstack.api.v2.ProjectQueryH\x00R\x05query\x88\x01\x01B\b\n" +
"\x06_query\"T\n" +
"\x1aProjectServiceListResponse\x126\n" +
- "\bprojects\x18\x01 \x03(\v2\x1a.metalstack.api.v2.ProjectR\bprojects2\x85\x01\n" +
+ "\bprojects\x18\x01 \x03(\v2\x1a.metalstack.api.v2.ProjectR\bprojects\"\xb8\x02\n" +
+ "\x1bProjectServiceCreateRequest\x12!\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n" +
+ "\x04name\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n" +
+ "\vdescription\x18\x03 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01R\vdescription\x12/\n" +
+ "\n" +
+ "avatar_url\x18\x04 \x01(\tB\v\xbaH\br\x06à³®\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x121\n" +
+ "\x06labels\x18\x05 \x01(\v2\x19.metalstack.api.v2.LabelsR\x06labels\x12'\n" +
+ "\aproject\x18\x06 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x01R\aproject\x88\x01\x01B\r\n" +
+ "\v_avatar_urlB\n" +
+ "\n" +
+ "\b_project\"T\n" +
+ "\x1cProjectServiceCreateResponse\x124\n" +
+ "\aproject\x18\x01 \x01(\v2\x1a.metalstack.api.v2.ProjectR\aproject2\x85\x01\n" +
"\x0eProjectService\x12s\n" +
"\x04List\x12..metalstack.admin.v2.ProjectServiceListRequest\x1a/.metalstack.admin.v2.ProjectServiceListResponse\"\n" +
"\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02B\xd0\x01\n" +
@@ -141,23 +292,28 @@ func file_metalstack_admin_v2_project_proto_rawDescGZIP() []byte {
return file_metalstack_admin_v2_project_proto_rawDescData
}
-var file_metalstack_admin_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_metalstack_admin_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_metalstack_admin_v2_project_proto_goTypes = []any{
- (*ProjectServiceListRequest)(nil), // 0: metalstack.admin.v2.ProjectServiceListRequest
- (*ProjectServiceListResponse)(nil), // 1: metalstack.admin.v2.ProjectServiceListResponse
- (*v2.ProjectQuery)(nil), // 2: metalstack.api.v2.ProjectQuery
- (*v2.Project)(nil), // 3: metalstack.api.v2.Project
+ (*ProjectServiceListRequest)(nil), // 0: metalstack.admin.v2.ProjectServiceListRequest
+ (*ProjectServiceListResponse)(nil), // 1: metalstack.admin.v2.ProjectServiceListResponse
+ (*ProjectServiceCreateRequest)(nil), // 2: metalstack.admin.v2.ProjectServiceCreateRequest
+ (*ProjectServiceCreateResponse)(nil), // 3: metalstack.admin.v2.ProjectServiceCreateResponse
+ (*v2.ProjectQuery)(nil), // 4: metalstack.api.v2.ProjectQuery
+ (*v2.Project)(nil), // 5: metalstack.api.v2.Project
+ (*v2.Labels)(nil), // 6: metalstack.api.v2.Labels
}
var file_metalstack_admin_v2_project_proto_depIdxs = []int32{
- 2, // 0: metalstack.admin.v2.ProjectServiceListRequest.query:type_name -> metalstack.api.v2.ProjectQuery
- 3, // 1: metalstack.admin.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
- 0, // 2: metalstack.admin.v2.ProjectService.List:input_type -> metalstack.admin.v2.ProjectServiceListRequest
- 1, // 3: metalstack.admin.v2.ProjectService.List:output_type -> metalstack.admin.v2.ProjectServiceListResponse
- 3, // [3:4] is the sub-list for method output_type
- 2, // [2:3] is the sub-list for method input_type
- 2, // [2:2] is the sub-list for extension type_name
- 2, // [2:2] is the sub-list for extension extendee
- 0, // [0:2] is the sub-list for field type_name
+ 4, // 0: metalstack.admin.v2.ProjectServiceListRequest.query:type_name -> metalstack.api.v2.ProjectQuery
+ 5, // 1: metalstack.admin.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
+ 6, // 2: metalstack.admin.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 5, // 3: metalstack.admin.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
+ 0, // 4: metalstack.admin.v2.ProjectService.List:input_type -> metalstack.admin.v2.ProjectServiceListRequest
+ 1, // 5: metalstack.admin.v2.ProjectService.List:output_type -> metalstack.admin.v2.ProjectServiceListResponse
+ 5, // [5:6] is the sub-list for method output_type
+ 4, // [4:5] is the sub-list for method input_type
+ 4, // [4:4] is the sub-list for extension type_name
+ 4, // [4:4] is the sub-list for extension extendee
+ 0, // [0:4] is the sub-list for field type_name
}
func init() { file_metalstack_admin_v2_project_proto_init() }
@@ -166,13 +322,14 @@ func file_metalstack_admin_v2_project_proto_init() {
return
}
file_metalstack_admin_v2_project_proto_msgTypes[0].OneofWrappers = []any{}
+ file_metalstack_admin_v2_project_proto_msgTypes[2].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_admin_v2_project_proto_rawDesc), len(file_metalstack_admin_v2_project_proto_rawDesc)),
NumEnums: 0,
- NumMessages: 2,
+ NumMessages: 4,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/metalstack/admin/v2/tenant.pb.go b/go/metalstack/admin/v2/tenant.pb.go
index 7c0e7a87..65844161 100644
--- a/go/metalstack/admin/v2/tenant.pb.go
+++ b/go/metalstack/admin/v2/tenant.pb.go
@@ -35,7 +35,9 @@ type TenantServiceCreateRequest struct {
// AvatarUrl of the tenant.
AvatarUrl *string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl,proto3,oneof" json:"avatar_url,omitempty"`
// Labels on the tenant.
- Labels *v2.Labels `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
+ Labels *v2.Labels `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
+ // Login of the tenant.
+ Login *string `protobuf:"bytes,6,opt,name=login,proto3,oneof" json:"login,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -105,6 +107,13 @@ func (x *TenantServiceCreateRequest) GetLabels() *v2.Labels {
return nil
}
+func (x *TenantServiceCreateRequest) GetLogin() string {
+ if x != nil && x.Login != nil {
+ return *x.Login
+ }
+ return ""
+}
+
// TenantServiceCreateResponse is the response payload for creating a tenant.
type TenantServiceCreateResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -467,17 +476,19 @@ var File_metalstack_admin_v2_tenant_proto protoreflect.FileDescriptor
const file_metalstack_admin_v2_tenant_proto_rawDesc = "" +
"\n" +
- " metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xa2\x02\n" +
+ " metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xd4\x02\n" +
"\x1aTenantServiceCreateRequest\x12\x1f\n" +
- "\x04name\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x04name\x122\n" +
+ "\x04name\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x122\n" +
"\vdescription\x18\x02 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x00R\vdescription\x88\x01\x01\x12\"\n" +
"\x05email\x18\x03 \x01(\tB\a\xbaH\x04r\x02`\x01H\x01R\x05email\x88\x01\x01\x12/\n" +
"\n" +
"avatar_url\x18\x04 \x01(\tB\v\xbaH\br\x06à³®\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x121\n" +
- "\x06labels\x18\x05 \x01(\v2\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n" +
+ "\x06labels\x18\x05 \x01(\v2\x19.metalstack.api.v2.LabelsR\x06labels\x12&\n" +
+ "\x05login\x18\x06 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01H\x03R\x05login\x88\x01\x01B\x0e\n" +
"\f_descriptionB\b\n" +
"\x06_emailB\r\n" +
- "\v_avatar_url\"P\n" +
+ "\v_avatar_urlB\b\n" +
+ "\x06_login\"P\n" +
"\x1bTenantServiceCreateResponse\x121\n" +
"\x06tenant\x18\x01 \x01(\v2\x19.metalstack.api.v2.TenantR\x06tenant\"P\n" +
"\x18TenantServiceListRequest\x124\n" +
diff --git a/js/metalstack/admin/v2/project_pb.d.ts b/js/metalstack/admin/v2/project_pb.d.ts
index 47336ba7..ccdf1ed3 100644
--- a/js/metalstack/admin/v2/project_pb.d.ts
+++ b/js/metalstack/admin/v2/project_pb.d.ts
@@ -1,4 +1,5 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import type { Labels } from "../../api/v2/common_pb";
import type { Project, ProjectQuery } from "../../api/v2/project_pb";
import type { Message } from "@bufbuild/protobuf";
/**
@@ -41,6 +42,72 @@ export type ProjectServiceListResponse = Message<"metalstack.admin.v2.ProjectSer
* Use `create(ProjectServiceListResponseSchema)` to create a new message.
*/
export declare const ProjectServiceListResponseSchema: GenMessage;
+/**
+ * ProjectServiceCreateRequest is the request payload to Create a project.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceCreateRequest
+ */
+export type ProjectServiceCreateRequest = Message<"metalstack.admin.v2.ProjectServiceCreateRequest"> & {
+ /**
+ * Login is the tenant of this project.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+ /**
+ * Name of this project, unique per tenant.
+ *
+ * @generated from field: string name = 2;
+ */
+ name: string;
+ /**
+ * Description of this project.
+ *
+ * @generated from field: string description = 3;
+ */
+ description: string;
+ /**
+ * Avatar URL of the project.
+ *
+ * @generated from field: optional string avatar_url = 4;
+ */
+ avatarUrl?: string | undefined;
+ /**
+ * Labels on the project.
+ *
+ * @generated from field: metalstack.api.v2.Labels labels = 5;
+ */
+ labels?: Labels | undefined;
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: optional string project = 6;
+ */
+ project?: string | undefined;
+};
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceCreateRequest.
+ * Use `create(ProjectServiceCreateRequestSchema)` to create a new message.
+ */
+export declare const ProjectServiceCreateRequestSchema: GenMessage;
+/**
+ * ProjectServiceCreateResponse is the response payload for creating a project.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceCreateResponse
+ */
+export type ProjectServiceCreateResponse = Message<"metalstack.admin.v2.ProjectServiceCreateResponse"> & {
+ /**
+ * Project contains the created project.
+ *
+ * @generated from field: metalstack.api.v2.Project project = 1;
+ */
+ project?: Project | undefined;
+};
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceCreateResponse.
+ * Use `create(ProjectServiceCreateResponseSchema)` to create a new message.
+ */
+export declare const ProjectServiceCreateResponseSchema: GenMessage;
/**
* ProjectService provides project management operations.
*
diff --git a/js/metalstack/admin/v2/project_pb.js b/js/metalstack/admin/v2/project_pb.js
index 93d57d0b..4c4007e4 100644
--- a/js/metalstack/admin/v2/project_pb.js
+++ b/js/metalstack/admin/v2/project_pb.js
@@ -2,12 +2,14 @@
// @generated from file metalstack/admin/v2/project.proto (package metalstack.admin.v2, syntax proto3)
/* eslint-disable */
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
+import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
import { file_metalstack_api_v2_project } from "../../api/v2/project_pb";
/**
* Describes the file metalstack/admin/v2/project.proto.
*/
-export const file_metalstack_admin_v2_project = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QyhQEKDlByb2plY3RTZXJ2aWNlEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtABChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIMUHJvamVjdFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_metalstack_api_v2_common, file_metalstack_api_v2_project]);
+export const file_metalstack_admin_v2_project = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiggIKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEiQKCmF2YXRhcl91cmwYBCABKAlCC7pICHIG4LOusQIBSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAGIAQFCDQoLX2F2YXRhcl91cmxCCgoIX3Byb2plY3QiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdDKFAQoOUHJvamVjdFNlcnZpY2UScwoETGlzdBIuLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBovLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAJC0AEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgxQcm9qZWN0UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project]);
/**
* Describes the message metalstack.admin.v2.ProjectServiceListRequest.
* Use `create(ProjectServiceListRequestSchema)` to create a new message.
@@ -18,6 +20,16 @@ export const ProjectServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_me
* Use `create(ProjectServiceListResponseSchema)` to create a new message.
*/
export const ProjectServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 1);
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceCreateRequest.
+ * Use `create(ProjectServiceCreateRequestSchema)` to create a new message.
+ */
+export const ProjectServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 2);
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceCreateResponse.
+ * Use `create(ProjectServiceCreateResponseSchema)` to create a new message.
+ */
+export const ProjectServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 3);
/**
* ProjectService provides project management operations.
*
diff --git a/js/metalstack/admin/v2/project_pb.ts b/js/metalstack/admin/v2/project_pb.ts
index 591b3a13..7087b8fa 100644
--- a/js/metalstack/admin/v2/project_pb.ts
+++ b/js/metalstack/admin/v2/project_pb.ts
@@ -4,7 +4,10 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import type { Labels } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
+import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
import type { Project, ProjectQuery } from "../../api/v2/project_pb";
import { file_metalstack_api_v2_project } from "../../api/v2/project_pb";
import type { Message } from "@bufbuild/protobuf";
@@ -13,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/admin/v2/project.proto.
*/
export const file_metalstack_admin_v2_project: GenFile = /*@__PURE__*/
- fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QyhQEKDlByb2plY3RTZXJ2aWNlEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtABChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIMUHJvamVjdFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_metalstack_api_v2_common, file_metalstack_api_v2_project]);
+ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiggIKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEiQKCmF2YXRhcl91cmwYBCABKAlCC7pICHIG4LOusQIBSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAGIAQFCDQoLX2F2YXRhcl91cmxCCgoIX3Byb2plY3QiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdDKFAQoOUHJvamVjdFNlcnZpY2UScwoETGlzdBIuLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBovLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAJC0AEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgxQcm9qZWN0UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project]);
/**
* ProjectServiceListRequest is the request payload for listing projects.
@@ -57,6 +60,83 @@ export type ProjectServiceListResponse = Message<"metalstack.admin.v2.ProjectSer
export const ProjectServiceListResponseSchema: GenMessage = /*@__PURE__*/
messageDesc(file_metalstack_admin_v2_project, 1);
+/**
+ * ProjectServiceCreateRequest is the request payload to Create a project.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceCreateRequest
+ */
+export type ProjectServiceCreateRequest = Message<"metalstack.admin.v2.ProjectServiceCreateRequest"> & {
+ /**
+ * Login is the tenant of this project.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+
+ /**
+ * Name of this project, unique per tenant.
+ *
+ * @generated from field: string name = 2;
+ */
+ name: string;
+
+ /**
+ * Description of this project.
+ *
+ * @generated from field: string description = 3;
+ */
+ description: string;
+
+ /**
+ * Avatar URL of the project.
+ *
+ * @generated from field: optional string avatar_url = 4;
+ */
+ avatarUrl?: string | undefined;
+
+ /**
+ * Labels on the project.
+ *
+ * @generated from field: metalstack.api.v2.Labels labels = 5;
+ */
+ labels?: Labels | undefined;
+
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: optional string project = 6;
+ */
+ project?: string | undefined;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceCreateRequest.
+ * Use `create(ProjectServiceCreateRequestSchema)` to create a new message.
+ */
+export const ProjectServiceCreateRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_project, 2);
+
+/**
+ * ProjectServiceCreateResponse is the response payload for creating a project.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceCreateResponse
+ */
+export type ProjectServiceCreateResponse = Message<"metalstack.admin.v2.ProjectServiceCreateResponse"> & {
+ /**
+ * Project contains the created project.
+ *
+ * @generated from field: metalstack.api.v2.Project project = 1;
+ */
+ project?: Project | undefined;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceCreateResponse.
+ * Use `create(ProjectServiceCreateResponseSchema)` to create a new message.
+ */
+export const ProjectServiceCreateResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_project, 3);
+
/**
* ProjectService provides project management operations.
*
diff --git a/js/metalstack/admin/v2/tenant_pb.d.ts b/js/metalstack/admin/v2/tenant_pb.d.ts
index e6eefd20..0f74f7a7 100644
--- a/js/metalstack/admin/v2/tenant_pb.d.ts
+++ b/js/metalstack/admin/v2/tenant_pb.d.ts
@@ -42,6 +42,12 @@ export type TenantServiceCreateRequest = Message<"metalstack.admin.v2.TenantServ
* @generated from field: metalstack.api.v2.Labels labels = 5;
*/
labels?: Labels | undefined;
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: optional string login = 6;
+ */
+ login?: string | undefined;
};
/**
* Describes the message metalstack.admin.v2.TenantServiceCreateRequest.
diff --git a/js/metalstack/admin/v2/tenant_pb.js b/js/metalstack/admin/v2/tenant_pb.js
index 2590df81..ecf5987b 100644
--- a/js/metalstack/admin/v2/tenant_pb.js
+++ b/js/metalstack/admin/v2/tenant_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb";
/**
* Describes the file metalstack/admin/v2/tenant.proto.
*/
-export const file_metalstack_admin_v2_tenant = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgaQtK6xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIkgKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Ei0KBXF1ZXJ5GAEgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UXVlcnkibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2UikAEKHVRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiXAogVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QSGwoGdGVuYW50GAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBIlsKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyMoYECg1UZW5hbnRTZXJ2aWNlEnYKBkNyZWF0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYARJ/CglBZGRNZW1iZXISMi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0GjMubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYARKIAQoMUmVtb3ZlTWVtYmVyEjUubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo2Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAFCzwEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgtUZW5hbnRQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
+export const file_metalstack_admin_v2_tenant = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiKgAgoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIfCgVsb2dpbhgGIAEoCUILukgIcgaQtK6xAgFIA4gBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsQggKBl9sb2dpbiJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5Im0KGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBIWCgluZXh0X3BhZ2UYAiABKARIAIgBAUIMCgpfbmV4dF9wYWdlIpABCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlgKHlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIlwKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASJbCiFUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2USNgoNdGVuYW50X21lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjKGBAoNVGVuYW50U2VydmljZRJ2CgZDcmVhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJxCgRMaXN0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAESfwoJQWRkTWVtYmVyEjIubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBozLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAESiAEKDFJlbW92ZU1lbWJlchI1Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILVGVuYW50UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
/**
* Describes the message metalstack.admin.v2.TenantServiceCreateRequest.
* Use `create(TenantServiceCreateRequestSchema)` to create a new message.
diff --git a/js/metalstack/admin/v2/tenant_pb.ts b/js/metalstack/admin/v2/tenant_pb.ts
index ce08a058..5cfe89e5 100644
--- a/js/metalstack/admin/v2/tenant_pb.ts
+++ b/js/metalstack/admin/v2/tenant_pb.ts
@@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/admin/v2/tenant.proto.
*/
export const file_metalstack_admin_v2_tenant: GenFile = /*@__PURE__*/
- fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgaQtK6xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIkgKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Ei0KBXF1ZXJ5GAEgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UXVlcnkibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2UikAEKHVRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiXAogVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QSGwoGdGVuYW50GAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBIlsKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyMoYECg1UZW5hbnRTZXJ2aWNlEnYKBkNyZWF0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYARJ/CglBZGRNZW1iZXISMi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0GjMubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYARKIAQoMUmVtb3ZlTWVtYmVyEjUubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo2Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAFCzwEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgtUZW5hbnRQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
+ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiKgAgoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIfCgVsb2dpbhgGIAEoCUILukgIcgaQtK6xAgFIA4gBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsQggKBl9sb2dpbiJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5Im0KGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBIWCgluZXh0X3BhZ2UYAiABKARIAIgBAUIMCgpfbmV4dF9wYWdlIpABCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlgKHlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIlwKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASJbCiFUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2USNgoNdGVuYW50X21lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjKGBAoNVGVuYW50U2VydmljZRJ2CgZDcmVhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJxCgRMaXN0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAESfwoJQWRkTWVtYmVyEjIubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBozLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAESiAEKDFJlbW92ZU1lbWJlchI1Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILVGVuYW50UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
/**
* TenantServiceCreateRequest is the request payload for creating a tenant.
@@ -58,6 +58,13 @@ export type TenantServiceCreateRequest = Message<"metalstack.admin.v2.TenantServ
* @generated from field: metalstack.api.v2.Labels labels = 5;
*/
labels?: Labels | undefined;
+
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: optional string login = 6;
+ */
+ login?: string | undefined;
};
/**
diff --git a/proto/metalstack/admin/v2/project.proto b/proto/metalstack/admin/v2/project.proto
index 3300e11f..76a5d99b 100644
--- a/proto/metalstack/admin/v2/project.proto
+++ b/proto/metalstack/admin/v2/project.proto
@@ -2,7 +2,9 @@ syntax = "proto3";
package metalstack.admin.v2;
+import "buf/validate/validate.proto";
import "metalstack/api/v2/common.proto";
+import "metalstack/api/v2/predefined_rules.proto";
import "metalstack/api/v2/project.proto";
// ProjectService provides project management operations.
@@ -26,3 +28,25 @@ message ProjectServiceListResponse {
// Projects contains the list of projects.
repeated metalstack.api.v2.Project projects = 1;
}
+
+// ProjectServiceCreateRequest is the request payload to Create a project.
+message ProjectServiceCreateRequest {
+ // Login is the tenant of this project.
+ string login = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+ // Name of this project, unique per tenant.
+ string name = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+ // Description of this project.
+ string description = 3 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true];
+ // Avatar URL of the project.
+ optional string avatar_url = 4 [(buf.validate.field).string.(metalstack.api.v2.is_uri) = true];
+ // Labels on the project.
+ metalstack.api.v2.Labels labels = 5;
+ // Project is the uuid of the project.
+ optional string project = 6 [(buf.validate.field).string.uuid = true];
+}
+
+// ProjectServiceCreateResponse is the response payload for creating a project.
+message ProjectServiceCreateResponse {
+ // Project contains the created project.
+ metalstack.api.v2.Project project = 1;
+}
diff --git a/proto/metalstack/admin/v2/tenant.proto b/proto/metalstack/admin/v2/tenant.proto
index 417f4821..616e707c 100644
--- a/proto/metalstack/admin/v2/tenant.proto
+++ b/proto/metalstack/admin/v2/tenant.proto
@@ -35,7 +35,7 @@ service TenantService {
// TenantServiceCreateRequest is the request payload for creating a tenant.
message TenantServiceCreateRequest {
// Name of the tenant.
- string name = 1 [(buf.validate.field).string.(metalstack.api.v2.is_tenant_login) = true];
+ string name = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
// Description of the tenant.
optional string description = 2 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true];
// Email of the tenant, if not set will be inherited from the creator.
@@ -44,6 +44,8 @@ message TenantServiceCreateRequest {
optional string avatar_url = 4 [(buf.validate.field).string.(metalstack.api.v2.is_uri) = true];
// Labels on the tenant.
metalstack.api.v2.Labels labels = 5;
+ // Login of the tenant.
+ optional string login = 6 [(buf.validate.field).string.(metalstack.api.v2.is_tenant_login) = true];
}
// TenantServiceCreateResponse is the response payload for creating a tenant.
diff --git a/python/metalstack/admin/v2/project_pb2.py b/python/metalstack/admin/v2/project_pb2.py
index 5fcc5c18..764612cf 100644
--- a/python/metalstack/admin/v2/project_pb2.py
+++ b/python/metalstack/admin/v2/project_pb2.py
@@ -22,11 +22,13 @@
_sym_db = _symbol_database.Default()
+from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2
+from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
from metalstack.api.v2 import project_pb2 as metalstack_dot_api_dot_v2_dot_project__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/project.proto\"a\n\x19ProjectServiceListRequest\x12:\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryH\x00R\x05query\x88\x01\x01\x42\x08\n\x06_query\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects2\x85\x01\n\x0eProjectService\x12s\n\x04List\x12..metalstack.admin.v2.ProjectServiceListRequest\x1a/.metalstack.admin.v2.ProjectServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xd0\x01\n\x17\x63om.metalstack.admin.v2B\x0cProjectProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1fmetalstack/api/v2/project.proto\"a\n\x19ProjectServiceListRequest\x12:\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryH\x00R\x05query\x88\x01\x01\x42\x08\n\x06_query\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\"\xb8\x02\n\x1bProjectServiceCreateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x01R\x07project\x88\x01\x01\x42\r\n\x0b_avatar_urlB\n\n\x08_project\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project2\x85\x01\n\x0eProjectService\x12s\n\x04List\x12..metalstack.admin.v2.ProjectServiceListRequest\x1a/.metalstack.admin.v2.ProjectServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xd0\x01\n\x17\x63om.metalstack.admin.v2B\x0cProjectProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -34,12 +36,26 @@
if not _descriptor._USE_C_DESCRIPTORS:
_globals['DESCRIPTOR']._loaded_options = None
_globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.admin.v2B\014ProjectProtoP\001Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\242\002\003MAX\252\002\023Metalstack.Admin.V2\312\002\023Metalstack\\Admin\\V2\342\002\037Metalstack\\Admin\\V2\\GPBMetadata\352\002\025Metalstack::Admin::V2'
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['login']._loaded_options = None
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['login']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['name']._loaded_options = None
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['description']._loaded_options = None
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001'
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['avatar_url']._loaded_options = None
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['avatar_url']._serialized_options = b'\272H\010r\006\340\263\256\261\002\001'
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['project']._loaded_options = None
+ _globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
_globals['_PROJECTSERVICE'].methods_by_name['List']._loaded_options = None
_globals['_PROJECTSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
- _globals['_PROJECTSERVICELISTREQUEST']._serialized_start=123
- _globals['_PROJECTSERVICELISTREQUEST']._serialized_end=220
- _globals['_PROJECTSERVICELISTRESPONSE']._serialized_start=222
- _globals['_PROJECTSERVICELISTRESPONSE']._serialized_end=306
- _globals['_PROJECTSERVICE']._serialized_start=309
- _globals['_PROJECTSERVICE']._serialized_end=442
+ _globals['_PROJECTSERVICELISTREQUEST']._serialized_start=194
+ _globals['_PROJECTSERVICELISTREQUEST']._serialized_end=291
+ _globals['_PROJECTSERVICELISTRESPONSE']._serialized_start=293
+ _globals['_PROJECTSERVICELISTRESPONSE']._serialized_end=377
+ _globals['_PROJECTSERVICECREATEREQUEST']._serialized_start=380
+ _globals['_PROJECTSERVICECREATEREQUEST']._serialized_end=692
+ _globals['_PROJECTSERVICECREATERESPONSE']._serialized_start=694
+ _globals['_PROJECTSERVICECREATERESPONSE']._serialized_end=778
+ _globals['_PROJECTSERVICE']._serialized_start=781
+ _globals['_PROJECTSERVICE']._serialized_end=914
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/admin/v2/project_pb2.pyi b/python/metalstack/admin/v2/project_pb2.pyi
index 1a75bc90..c55b2456 100644
--- a/python/metalstack/admin/v2/project_pb2.pyi
+++ b/python/metalstack/admin/v2/project_pb2.pyi
@@ -1,4 +1,6 @@
+from buf.validate import validate_pb2 as _validate_pb2
from metalstack.api.v2 import common_pb2 as _common_pb2
+from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2
from metalstack.api.v2 import project_pb2 as _project_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
@@ -19,3 +21,25 @@ class ProjectServiceListResponse(_message.Message):
PROJECTS_FIELD_NUMBER: _ClassVar[int]
projects: _containers.RepeatedCompositeFieldContainer[_project_pb2.Project]
def __init__(self, projects: _Optional[_Iterable[_Union[_project_pb2.Project, _Mapping]]] = ...) -> None: ...
+
+class ProjectServiceCreateRequest(_message.Message):
+ __slots__ = ("login", "name", "description", "avatar_url", "labels", "project")
+ LOGIN_FIELD_NUMBER: _ClassVar[int]
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
+ AVATAR_URL_FIELD_NUMBER: _ClassVar[int]
+ LABELS_FIELD_NUMBER: _ClassVar[int]
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
+ login: str
+ name: str
+ description: str
+ avatar_url: str
+ labels: _common_pb2.Labels
+ project: str
+ def __init__(self, login: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., avatar_url: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., project: _Optional[str] = ...) -> None: ...
+
+class ProjectServiceCreateResponse(_message.Message):
+ __slots__ = ("project",)
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
+ project: _project_pb2.Project
+ def __init__(self, project: _Optional[_Union[_project_pb2.Project, _Mapping]] = ...) -> None: ...
diff --git a/python/metalstack/admin/v2/tenant_pb2.py b/python/metalstack/admin/v2/tenant_pb2.py
index 16d5a779..40416444 100644
--- a/python/metalstack/admin/v2/tenant_pb2.py
+++ b/python/metalstack/admin/v2/tenant_pb2.py
@@ -28,7 +28,7 @@
from metalstack.api.v2 import tenant_pb2 as metalstack_dot_api_dot_v2_dot_tenant__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xa2\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x18TenantServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.TenantQueryR\x05query\"\x80\x01\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\x12 \n\tnext_page\x18\x02 \x01(\x04H\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page\"\xa6\x01\n\x1dTenantServiceAddMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n\x1eTenantServiceAddMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember\"l\n TenantServiceRemoveMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"i\n!TenantServiceRemoveMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\x86\x04\n\rTenantService\x12v\n\x06\x43reate\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a\x30.metalstack.admin.v2.TenantServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12q\n\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x7f\n\tAddMember\x12\x32.metalstack.admin.v2.TenantServiceAddMemberRequest\x1a\x33.metalstack.admin.v2.TenantServiceAddMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x88\x01\n\x0cRemoveMember\x12\x35.metalstack.admin.v2.TenantServiceRemoveMemberRequest\x1a\x36.metalstack.admin.v2.TenantServiceRemoveMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bTenantProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xd4\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12&\n\x05login\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01H\x03R\x05login\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_urlB\x08\n\x06_login\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x18TenantServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.TenantQueryR\x05query\"\x80\x01\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\x12 \n\tnext_page\x18\x02 \x01(\x04H\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page\"\xa6\x01\n\x1dTenantServiceAddMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n\x1eTenantServiceAddMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember\"l\n TenantServiceRemoveMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"i\n!TenantServiceRemoveMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\x86\x04\n\rTenantService\x12v\n\x06\x43reate\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a\x30.metalstack.admin.v2.TenantServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12q\n\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x7f\n\tAddMember\x12\x32.metalstack.admin.v2.TenantServiceAddMemberRequest\x1a\x33.metalstack.admin.v2.TenantServiceAddMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x88\x01\n\x0cRemoveMember\x12\x35.metalstack.admin.v2.TenantServiceRemoveMemberRequest\x1a\x36.metalstack.admin.v2.TenantServiceRemoveMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bTenantProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -37,13 +37,15 @@
_globals['DESCRIPTOR']._loaded_options = None
_globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.admin.v2B\013TenantProtoP\001Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\242\002\003MAX\252\002\023Metalstack.Admin.V2\312\002\023Metalstack\\Admin\\V2\342\002\037Metalstack\\Admin\\V2\\GPBMetadata\352\002\025Metalstack::Admin::V2'
_globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._loaded_options = None
- _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001'
+ _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
_globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['description']._loaded_options = None
_globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001'
_globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['email']._loaded_options = None
_globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['email']._serialized_options = b'\272H\004r\002`\001'
_globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['avatar_url']._loaded_options = None
_globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['avatar_url']._serialized_options = b'\272H\010r\006\340\263\256\261\002\001'
+ _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['login']._loaded_options = None
+ _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['login']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001'
_globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['tenant']._loaded_options = None
_globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['tenant']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001'
_globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['member']._loaded_options = None
@@ -63,21 +65,21 @@
_globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._loaded_options = None
_globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
_globals['_TENANTSERVICECREATEREQUEST']._serialized_start=193
- _globals['_TENANTSERVICECREATEREQUEST']._serialized_end=483
- _globals['_TENANTSERVICECREATERESPONSE']._serialized_start=485
- _globals['_TENANTSERVICECREATERESPONSE']._serialized_end=565
- _globals['_TENANTSERVICELISTREQUEST']._serialized_start=567
- _globals['_TENANTSERVICELISTREQUEST']._serialized_end=647
- _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=650
- _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=778
- _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_start=781
- _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_end=947
- _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_start=949
- _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_end=1051
- _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=1053
- _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=1161
- _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=1163
- _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=1268
- _globals['_TENANTSERVICE']._serialized_start=1271
- _globals['_TENANTSERVICE']._serialized_end=1789
+ _globals['_TENANTSERVICECREATEREQUEST']._serialized_end=533
+ _globals['_TENANTSERVICECREATERESPONSE']._serialized_start=535
+ _globals['_TENANTSERVICECREATERESPONSE']._serialized_end=615
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_start=617
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_end=697
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=700
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=828
+ _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_start=831
+ _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_end=997
+ _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_start=999
+ _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_end=1101
+ _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=1103
+ _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=1211
+ _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=1213
+ _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=1318
+ _globals['_TENANTSERVICE']._serialized_start=1321
+ _globals['_TENANTSERVICE']._serialized_end=1839
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/admin/v2/tenant_pb2.pyi b/python/metalstack/admin/v2/tenant_pb2.pyi
index 77b01eb8..701d6d69 100644
--- a/python/metalstack/admin/v2/tenant_pb2.pyi
+++ b/python/metalstack/admin/v2/tenant_pb2.pyi
@@ -11,18 +11,20 @@ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
DESCRIPTOR: _descriptor.FileDescriptor
class TenantServiceCreateRequest(_message.Message):
- __slots__ = ("name", "description", "email", "avatar_url", "labels")
+ __slots__ = ("name", "description", "email", "avatar_url", "labels", "login")
NAME_FIELD_NUMBER: _ClassVar[int]
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
EMAIL_FIELD_NUMBER: _ClassVar[int]
AVATAR_URL_FIELD_NUMBER: _ClassVar[int]
LABELS_FIELD_NUMBER: _ClassVar[int]
+ LOGIN_FIELD_NUMBER: _ClassVar[int]
name: str
description: str
email: str
avatar_url: str
labels: _common_pb2.Labels
- def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., email: _Optional[str] = ..., avatar_url: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ...) -> None: ...
+ login: str
+ def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., email: _Optional[str] = ..., avatar_url: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., login: _Optional[str] = ...) -> None: ...
class TenantServiceCreateResponse(_message.Message):
__slots__ = ("tenant",)
From 11f6a1ed8099082766b0bac5cac7993a0cfc06c3 Mon Sep 17 00:00:00 2001
From: Gerrit
Date: Tue, 29 Sep 2026 15:58:27 +0200
Subject: [PATCH 3/4] Service.
---
doc/index.html | 7 ++
.../v2/adminv2connect/project.connect.go | 36 +++++++++-
go/metalstack/admin/v2/project.pb.go | 15 +++--
go/permissions/servicepermissions.go | 4 ++
js/metalstack/admin/v2/project_pb.d.ts | 10 +++
js/metalstack/admin/v2/project_pb.js | 2 +-
js/metalstack/admin/v2/project_pb.ts | 12 +++-
proto/metalstack/admin/v2/project.proto | 5 ++
python/metalstack/admin/v2/project_connect.py | 65 +++++++++++++++++++
python/metalstack/admin/v2/project_pb2.py | 6 +-
10 files changed, 151 insertions(+), 11 deletions(-)
diff --git a/doc/index.html b/doc/index.html
index 73ca7930..94b31a23 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -17118,6 +17118,13 @@ ProjectService
+
+ | Create |
+ ProjectServiceCreateRequest |
+ ProjectServiceCreateResponse |
+ Creates a new project. |
+
+
| List |
ProjectServiceListRequest |
diff --git a/go/metalstack/admin/v2/adminv2connect/project.connect.go b/go/metalstack/admin/v2/adminv2connect/project.connect.go
index 9d614b2f..80d757fb 100644
--- a/go/metalstack/admin/v2/adminv2connect/project.connect.go
+++ b/go/metalstack/admin/v2/adminv2connect/project.connect.go
@@ -33,12 +33,16 @@ const (
// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
// period.
const (
+ // ProjectServiceCreateProcedure is the fully-qualified name of the ProjectService's Create RPC.
+ ProjectServiceCreateProcedure = "/metalstack.admin.v2.ProjectService/Create"
// ProjectServiceListProcedure is the fully-qualified name of the ProjectService's List RPC.
ProjectServiceListProcedure = "/metalstack.admin.v2.ProjectService/List"
)
// ProjectServiceClient is a client for the metalstack.admin.v2.ProjectService service.
type ProjectServiceClient interface {
+ // Creates a new project.
+ Create(context.Context, *v2.ProjectServiceCreateRequest) (*v2.ProjectServiceCreateResponse, error)
// Returns the list of projects matching the filter criteria.
List(context.Context, *v2.ProjectServiceListRequest) (*v2.ProjectServiceListResponse, error)
}
@@ -54,6 +58,12 @@ func NewProjectServiceClient(httpClient connect.HTTPClient, baseURL string, opts
baseURL = strings.TrimRight(baseURL, "/")
projectServiceMethods := v2.File_metalstack_admin_v2_project_proto.Services().ByName("ProjectService").Methods()
return &projectServiceClient{
+ create: connect.NewClient[v2.ProjectServiceCreateRequest, v2.ProjectServiceCreateResponse](
+ httpClient,
+ baseURL+ProjectServiceCreateProcedure,
+ connect.WithSchema(projectServiceMethods.ByName("Create")),
+ connect.WithClientOptions(opts...),
+ ),
list: connect.NewClient[v2.ProjectServiceListRequest, v2.ProjectServiceListResponse](
httpClient,
baseURL+ProjectServiceListProcedure,
@@ -65,7 +75,17 @@ func NewProjectServiceClient(httpClient connect.HTTPClient, baseURL string, opts
// projectServiceClient implements ProjectServiceClient.
type projectServiceClient struct {
- list *connect.Client[v2.ProjectServiceListRequest, v2.ProjectServiceListResponse]
+ create *connect.Client[v2.ProjectServiceCreateRequest, v2.ProjectServiceCreateResponse]
+ list *connect.Client[v2.ProjectServiceListRequest, v2.ProjectServiceListResponse]
+}
+
+// Create calls metalstack.admin.v2.ProjectService.Create.
+func (c *projectServiceClient) Create(ctx context.Context, req *v2.ProjectServiceCreateRequest) (*v2.ProjectServiceCreateResponse, error) {
+ response, err := c.create.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
}
// List calls metalstack.admin.v2.ProjectService.List.
@@ -79,6 +99,8 @@ func (c *projectServiceClient) List(ctx context.Context, req *v2.ProjectServiceL
// ProjectServiceHandler is an implementation of the metalstack.admin.v2.ProjectService service.
type ProjectServiceHandler interface {
+ // Creates a new project.
+ Create(context.Context, *v2.ProjectServiceCreateRequest) (*v2.ProjectServiceCreateResponse, error)
// Returns the list of projects matching the filter criteria.
List(context.Context, *v2.ProjectServiceListRequest) (*v2.ProjectServiceListResponse, error)
}
@@ -90,6 +112,12 @@ type ProjectServiceHandler interface {
// and JSON codecs. They also support gzip compression.
func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
projectServiceMethods := v2.File_metalstack_admin_v2_project_proto.Services().ByName("ProjectService").Methods()
+ projectServiceCreateHandler := connect.NewUnaryHandlerSimple(
+ ProjectServiceCreateProcedure,
+ svc.Create,
+ connect.WithSchema(projectServiceMethods.ByName("Create")),
+ connect.WithHandlerOptions(opts...),
+ )
projectServiceListHandler := connect.NewUnaryHandlerSimple(
ProjectServiceListProcedure,
svc.List,
@@ -98,6 +126,8 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler
)
return "/metalstack.admin.v2.ProjectService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
+ case ProjectServiceCreateProcedure:
+ projectServiceCreateHandler.ServeHTTP(w, r)
case ProjectServiceListProcedure:
projectServiceListHandler.ServeHTTP(w, r)
default:
@@ -109,6 +139,10 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler
// UnimplementedProjectServiceHandler returns CodeUnimplemented from all methods.
type UnimplementedProjectServiceHandler struct{}
+func (UnimplementedProjectServiceHandler) Create(context.Context, *v2.ProjectServiceCreateRequest) (*v2.ProjectServiceCreateResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.ProjectService.Create is not implemented"))
+}
+
func (UnimplementedProjectServiceHandler) List(context.Context, *v2.ProjectServiceListRequest) (*v2.ProjectServiceListResponse, error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.ProjectService.List is not implemented"))
}
diff --git a/go/metalstack/admin/v2/project.pb.go b/go/metalstack/admin/v2/project.pb.go
index f171cc2e..45476985 100644
--- a/go/metalstack/admin/v2/project.pb.go
+++ b/go/metalstack/admin/v2/project.pb.go
@@ -274,8 +274,9 @@ const file_metalstack_admin_v2_project_proto_rawDesc = "" +
"\n" +
"\b_project\"T\n" +
"\x1cProjectServiceCreateResponse\x124\n" +
- "\aproject\x18\x01 \x01(\v2\x1a.metalstack.api.v2.ProjectR\aproject2\x85\x01\n" +
- "\x0eProjectService\x12s\n" +
+ "\aproject\x18\x01 \x01(\v2\x1a.metalstack.api.v2.ProjectR\aproject2\xff\x01\n" +
+ "\x0eProjectService\x12x\n" +
+ "\x06Create\x120.metalstack.admin.v2.ProjectServiceCreateRequest\x1a1.metalstack.admin.v2.ProjectServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12s\n" +
"\x04List\x12..metalstack.admin.v2.ProjectServiceListRequest\x1a/.metalstack.admin.v2.ProjectServiceListResponse\"\n" +
"\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02B\xd0\x01\n" +
"\x17com.metalstack.admin.v2B\fProjectProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3"
@@ -307,10 +308,12 @@ var file_metalstack_admin_v2_project_proto_depIdxs = []int32{
5, // 1: metalstack.admin.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
6, // 2: metalstack.admin.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
5, // 3: metalstack.admin.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
- 0, // 4: metalstack.admin.v2.ProjectService.List:input_type -> metalstack.admin.v2.ProjectServiceListRequest
- 1, // 5: metalstack.admin.v2.ProjectService.List:output_type -> metalstack.admin.v2.ProjectServiceListResponse
- 5, // [5:6] is the sub-list for method output_type
- 4, // [4:5] is the sub-list for method input_type
+ 2, // 4: metalstack.admin.v2.ProjectService.Create:input_type -> metalstack.admin.v2.ProjectServiceCreateRequest
+ 0, // 5: metalstack.admin.v2.ProjectService.List:input_type -> metalstack.admin.v2.ProjectServiceListRequest
+ 3, // 6: metalstack.admin.v2.ProjectService.Create:output_type -> metalstack.admin.v2.ProjectServiceCreateResponse
+ 1, // 7: metalstack.admin.v2.ProjectService.List:output_type -> metalstack.admin.v2.ProjectServiceListResponse
+ 6, // [6:8] is the sub-list for method output_type
+ 4, // [4:6] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go
index f6eaedd9..2b722400 100755
--- a/go/permissions/servicepermissions.go
+++ b/go/permissions/servicepermissions.go
@@ -90,6 +90,7 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": {},
"/metalstack.admin.v2.PartitionService/Delete": {},
"/metalstack.admin.v2.PartitionService/Update": {},
+ "/metalstack.admin.v2.ProjectService/Create": {},
"/metalstack.admin.v2.ProjectService/List": {},
"/metalstack.admin.v2.SizeImageConstraintService/Create": {},
"/metalstack.admin.v2.SizeImageConstraintService/Delete": {},
@@ -322,6 +323,7 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": {},
"/metalstack.admin.v2.PartitionService/Delete": {},
"/metalstack.admin.v2.PartitionService/Update": {},
+ "/metalstack.admin.v2.ProjectService/Create": {},
"/metalstack.admin.v2.ProjectService/List": {},
"/metalstack.admin.v2.SizeImageConstraintService/Create": {},
"/metalstack.admin.v2.SizeImageConstraintService/Delete": {},
@@ -513,6 +515,7 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": true,
"/metalstack.admin.v2.PartitionService/Delete": true,
"/metalstack.admin.v2.PartitionService/Update": true,
+ "/metalstack.admin.v2.ProjectService/Create": true,
"/metalstack.admin.v2.ProjectService/List": true,
"/metalstack.admin.v2.SizeImageConstraintService/Create": true,
"/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
@@ -650,6 +653,7 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": true,
"/metalstack.admin.v2.PartitionService/Delete": true,
"/metalstack.admin.v2.PartitionService/Update": true,
+ "/metalstack.admin.v2.ProjectService/Create": true,
"/metalstack.admin.v2.ProjectService/List": false,
"/metalstack.admin.v2.SizeImageConstraintService/Create": true,
"/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
diff --git a/js/metalstack/admin/v2/project_pb.d.ts b/js/metalstack/admin/v2/project_pb.d.ts
index ccdf1ed3..fcefb817 100644
--- a/js/metalstack/admin/v2/project_pb.d.ts
+++ b/js/metalstack/admin/v2/project_pb.d.ts
@@ -114,6 +114,16 @@ export declare const ProjectServiceCreateResponseSchema: GenMessage metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse:
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
+
async def list(self, request: metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceListResponse:
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
@@ -27,6 +30,16 @@ def __init__(self, service: ProjectService | AsyncGenerator[ProjectService], *,
super().__init__(
service=service,
endpoints=lambda svc: {
+ "/metalstack.admin.v2.ProjectService/Create": Endpoint.unary(
+ method=MethodInfo(
+ name="Create",
+ service_name="metalstack.admin.v2.ProjectService",
+ input=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateRequest,
+ output=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ function=svc.create,
+ ),
"/metalstack.admin.v2.ProjectService/List": Endpoint.unary(
method=MethodInfo(
name="List",
@@ -51,6 +64,26 @@ def path(self) -> str:
class ProjectServiceClient(ConnectClient):
+ async def create(
+ self,
+ request: metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateRequest,
+ *,
+ headers: Headers | Mapping[str, str] | None = None,
+ timeout_ms: int | None = None,
+ ) -> metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse:
+ return await self.execute_unary(
+ request=request,
+ method=MethodInfo(
+ name="Create",
+ service_name="metalstack.admin.v2.ProjectService",
+ input=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateRequest,
+ output=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ headers=headers,
+ timeout_ms=timeout_ms,
+ )
+
async def list(
self,
request: metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceListRequest,
@@ -76,6 +109,8 @@ async def list(
class ProjectServiceSync(Protocol):
+ def create(self, request: metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse:
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
def list(self, request: metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceListResponse:
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
@@ -84,6 +119,16 @@ class ProjectServiceWSGIApplication(ConnectWSGIApplication):
def __init__(self, service: ProjectServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None, codecs: Iterable[Codec] | None = None) -> None:
super().__init__(
endpoints={
+ "/metalstack.admin.v2.ProjectService/Create": EndpointSync.unary(
+ method=MethodInfo(
+ name="Create",
+ service_name="metalstack.admin.v2.ProjectService",
+ input=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateRequest,
+ output=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ function=service.create,
+ ),
"/metalstack.admin.v2.ProjectService/List": EndpointSync.unary(
method=MethodInfo(
name="List",
@@ -108,6 +153,26 @@ def path(self) -> str:
class ProjectServiceClientSync(ConnectClientSync):
+ def create(
+ self,
+ request: metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateRequest,
+ *,
+ headers: Headers | Mapping[str, str] | None = None,
+ timeout_ms: int | None = None,
+ ) -> metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse:
+ return self.execute_unary(
+ request=request,
+ method=MethodInfo(
+ name="Create",
+ service_name="metalstack.admin.v2.ProjectService",
+ input=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateRequest,
+ output=metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceCreateResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ headers=headers,
+ timeout_ms=timeout_ms,
+ )
+
def list(
self,
request: metalstack_dot_admin_dot_v2_dot_project__pb2.ProjectServiceListRequest,
diff --git a/python/metalstack/admin/v2/project_pb2.py b/python/metalstack/admin/v2/project_pb2.py
index 764612cf..210be7ba 100644
--- a/python/metalstack/admin/v2/project_pb2.py
+++ b/python/metalstack/admin/v2/project_pb2.py
@@ -28,7 +28,7 @@
from metalstack.api.v2 import project_pb2 as metalstack_dot_api_dot_v2_dot_project__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1fmetalstack/api/v2/project.proto\"a\n\x19ProjectServiceListRequest\x12:\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryH\x00R\x05query\x88\x01\x01\x42\x08\n\x06_query\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\"\xb8\x02\n\x1bProjectServiceCreateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x01R\x07project\x88\x01\x01\x42\r\n\x0b_avatar_urlB\n\n\x08_project\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project2\x85\x01\n\x0eProjectService\x12s\n\x04List\x12..metalstack.admin.v2.ProjectServiceListRequest\x1a/.metalstack.admin.v2.ProjectServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xd0\x01\n\x17\x63om.metalstack.admin.v2B\x0cProjectProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1fmetalstack/api/v2/project.proto\"a\n\x19ProjectServiceListRequest\x12:\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryH\x00R\x05query\x88\x01\x01\x42\x08\n\x06_query\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\"\xb8\x02\n\x1bProjectServiceCreateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x01R\x07project\x88\x01\x01\x42\r\n\x0b_avatar_urlB\n\n\x08_project\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project2\xff\x01\n\x0eProjectService\x12x\n\x06\x43reate\x12\x30.metalstack.admin.v2.ProjectServiceCreateRequest\x1a\x31.metalstack.admin.v2.ProjectServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12s\n\x04List\x12..metalstack.admin.v2.ProjectServiceListRequest\x1a/.metalstack.admin.v2.ProjectServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xd0\x01\n\x17\x63om.metalstack.admin.v2B\x0cProjectProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -46,6 +46,8 @@
_globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['avatar_url']._serialized_options = b'\272H\010r\006\340\263\256\261\002\001'
_globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['project']._loaded_options = None
_globals['_PROJECTSERVICECREATEREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
+ _globals['_PROJECTSERVICE'].methods_by_name['Create']._loaded_options = None
+ _globals['_PROJECTSERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
_globals['_PROJECTSERVICE'].methods_by_name['List']._loaded_options = None
_globals['_PROJECTSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
_globals['_PROJECTSERVICELISTREQUEST']._serialized_start=194
@@ -57,5 +59,5 @@
_globals['_PROJECTSERVICECREATERESPONSE']._serialized_start=694
_globals['_PROJECTSERVICECREATERESPONSE']._serialized_end=778
_globals['_PROJECTSERVICE']._serialized_start=781
- _globals['_PROJECTSERVICE']._serialized_end=914
+ _globals['_PROJECTSERVICE']._serialized_end=1036
# @@protoc_insertion_point(module_scope)
From 0fd7079a9e1a5ac2dbfe3f412ef25dfedea38886 Mon Sep 17 00:00:00 2001
From: Gerrit
Date: Wed, 30 Sep 2026 11:16:20 +0200
Subject: [PATCH 4/4] Own CRUD for members.
---
doc/index.html | 3791 ++++++++++-------
go/client/client.go | 22 +
.../v2/adminv2connect/project.connect.go | 74 +-
go/metalstack/admin/v2/project.pb.go | 287 +-
go/metalstack/admin/v2/tenant.pb.go | 34 +-
.../api/v2/apiv2connect/project.connect.go | 139 -
.../v2/apiv2connect/project_member.connect.go | 291 ++
.../api/v2/apiv2connect/tenant.connect.go | 138 -
.../v2/apiv2connect/tenant_member.connect.go | 290 ++
go/metalstack/api/v2/project.pb.go | 857 +---
go/metalstack/api/v2/project_member.pb.go | 940 ++++
go/metalstack/api/v2/tenant.pb.go | 854 +---
go/metalstack/api/v2/tenant_member.pb.go | 960 +++++
go/metalstack/cli/v2/project.pb.go | 139 -
go/metalstack/cli/v2/tenant.pb.go | 139 -
go/permissions/servicepermissions.go | 111 +-
js/client.d.ts | 4 +
js/client.js | 14 +
js/client.ts | 26 +
js/metalstack/admin/v2/project_pb.d.ts | 113 +-
js/metalstack/admin/v2/project_pb.js | 23 +-
js/metalstack/admin/v2/project_pb.ts | 131 +-
js/metalstack/admin/v2/tenant_pb.d.ts | 15 +-
js/metalstack/admin/v2/tenant_pb.js | 3 +-
js/metalstack/admin/v2/tenant_pb.ts | 18 +-
js/metalstack/api/v2/project_member_pb.d.ts | 407 ++
js/metalstack/api/v2/project_member_pb.js | 88 +
js/metalstack/api/v2/project_member_pb.ts | 476 +++
js/metalstack/api/v2/project_pb.d.ts | 257 --
js/metalstack/api/v2/project_pb.js | 91 +-
js/metalstack/api/v2/project_pb.ts | 341 +-
js/metalstack/api/v2/tenant_member_pb.d.ts | 417 ++
js/metalstack/api/v2/tenant_member_pb.js | 88 +
js/metalstack/api/v2/tenant_member_pb.ts | 488 +++
js/metalstack/api/v2/tenant_pb.d.ts | 255 --
js/metalstack/api/v2/tenant_pb.js | 91 +-
js/metalstack/api/v2/tenant_pb.ts | 339 +-
js/metalstack/cli/v2/project_pb.d.ts | 31 -
js/metalstack/cli/v2/project_pb.js | 15 -
js/metalstack/cli/v2/project_pb.ts | 45 -
js/metalstack/cli/v2/tenant_pb.d.ts | 31 -
js/metalstack/cli/v2/tenant_pb.js | 16 -
js/metalstack/cli/v2/tenant_pb.ts | 46 -
proto/metalstack/admin/v2/project.proto | 41 +
proto/metalstack/admin/v2/tenant.proto | 9 +-
proto/metalstack/api/v2/project.proto | 94 -
proto/metalstack/api/v2/project_member.proto | 159 +
proto/metalstack/api/v2/tenant.proto | 95 -
proto/metalstack/api/v2/tenant_member.proto | 163 +
proto/metalstack/cli/v2/project.proto | 14 -
proto/metalstack/cli/v2/tenant.proto | 15 -
python/Makefile | 1 -
python/metalstack/admin/v2/project_connect.py | 130 +
python/metalstack/admin/v2/project_pb2.py | 45 +-
python/metalstack/admin/v2/project_pb2.pyi | 31 +
python/metalstack/admin/v2/tenant_pb2.py | 39 +-
python/metalstack/admin/v2/tenant_pb2.pyi | 17 +-
python/metalstack/api/v2/project_connect.py | 260 --
.../api/v2/project_member_connect.py | 456 ++
.../metalstack/api/v2/project_member_pb2.py | 111 +
.../metalstack/api/v2/project_member_pb2.pyi | 123 +
python/metalstack/api/v2/project_pb2.py | 136 +-
python/metalstack/api/v2/project_pb2.pyi | 76 +-
python/metalstack/api/v2/tenant_connect.py | 260 --
.../api/v2/tenant_member_connect.py | 456 ++
python/metalstack/api/v2/tenant_member_pb2.py | 115 +
.../metalstack/api/v2/tenant_member_pb2.pyi | 127 +
python/metalstack/api/v2/tenant_pb2.py | 140 +-
python/metalstack/api/v2/tenant_pb2.pyi | 76 +-
python/metalstack/cli/__init__.py | 0
python/metalstack/cli/v2/__init__.py | 0
python/metalstack/cli/v2/project_pb2.py | 41 -
python/metalstack/cli/v2/project_pb2.pyi | 16 -
python/metalstack/cli/v2/tenant_pb2.py | 42 -
python/metalstack/cli/v2/tenant_pb2.pyi | 17 -
python/metalstack/client/client.py | 8 +
76 files changed, 9845 insertions(+), 6403 deletions(-)
create mode 100644 go/metalstack/api/v2/apiv2connect/project_member.connect.go
create mode 100644 go/metalstack/api/v2/apiv2connect/tenant_member.connect.go
create mode 100644 go/metalstack/api/v2/project_member.pb.go
create mode 100644 go/metalstack/api/v2/tenant_member.pb.go
delete mode 100644 go/metalstack/cli/v2/project.pb.go
delete mode 100644 go/metalstack/cli/v2/tenant.pb.go
create mode 100644 js/metalstack/api/v2/project_member_pb.d.ts
create mode 100644 js/metalstack/api/v2/project_member_pb.js
create mode 100644 js/metalstack/api/v2/project_member_pb.ts
create mode 100644 js/metalstack/api/v2/tenant_member_pb.d.ts
create mode 100644 js/metalstack/api/v2/tenant_member_pb.js
create mode 100644 js/metalstack/api/v2/tenant_member_pb.ts
delete mode 100644 js/metalstack/cli/v2/project_pb.d.ts
delete mode 100644 js/metalstack/cli/v2/project_pb.js
delete mode 100644 js/metalstack/cli/v2/project_pb.ts
delete mode 100644 js/metalstack/cli/v2/tenant_pb.d.ts
delete mode 100644 js/metalstack/cli/v2/tenant_pb.js
delete mode 100644 js/metalstack/cli/v2/tenant_pb.ts
create mode 100644 proto/metalstack/api/v2/project_member.proto
create mode 100644 proto/metalstack/api/v2/tenant_member.proto
delete mode 100644 proto/metalstack/cli/v2/project.proto
delete mode 100644 proto/metalstack/cli/v2/tenant.proto
create mode 100644 python/metalstack/api/v2/project_member_connect.py
create mode 100644 python/metalstack/api/v2/project_member_pb2.py
create mode 100644 python/metalstack/api/v2/project_member_pb2.pyi
create mode 100644 python/metalstack/api/v2/tenant_member_connect.py
create mode 100644 python/metalstack/api/v2/tenant_member_pb2.py
create mode 100644 python/metalstack/api/v2/tenant_member_pb2.pyi
delete mode 100644 python/metalstack/cli/__init__.py
delete mode 100644 python/metalstack/cli/v2/__init__.py
delete mode 100644 python/metalstack/cli/v2/project_pb2.py
delete mode 100644 python/metalstack/cli/v2/project_pb2.pyi
delete mode 100644 python/metalstack/cli/v2/tenant_pb2.py
delete mode 100644 python/metalstack/cli/v2/tenant_pb2.pyi
diff --git a/doc/index.html b/doc/index.html
index 94b31a23..1e379b19 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1800,22 +1800,10 @@ Table of Contents
MProjectInvite
-
- MProjectMember
-
-
MProjectQuery
-
- MProjectServiceAddMemberRequest
-
-
-
- MProjectServiceAddMemberResponse
-
-
MProjectServiceCreateRequest
@@ -1881,50 +1869,97 @@ Table of Contents
- MProjectServiceLeaveRequest
+ MProjectServiceListRequest
- MProjectServiceLeaveResponse
+ MProjectServiceListResponse
- MProjectServiceListRequest
+ MProjectServiceUpdateRequest
- MProjectServiceListResponse
+ MProjectServiceUpdateResponse
+
+
+
- MProjectServiceRemoveMemberRequest
+ SProjectService
+
+
+
+
+
+ metalstack/api/v2/project_member.proto
+
@@ -1935,6 +1970,14 @@ Table of Contents
metalstack/admin/v2/project.proto
+
+ MProjectServiceRemoveMemberRequest
+
+
+
+ MProjectServiceRemoveMemberResponse
+
+
@@ -2315,22 +2366,10 @@ Table of Contents
MTenantInvite
-
- MTenantMember
-
-
MTenantQuery
-
- MTenantServiceAddMemberRequest
-
-
-
- MTenantServiceAddMemberResponse
-
-
MTenantServiceCreateRequest
@@ -2396,50 +2435,97 @@ Table of Contents
- MTenantServiceLeaveRequest
+ MTenantServiceListRequest
- MTenantServiceLeaveResponse
+ MTenantServiceListResponse
- MTenantServiceListRequest
+ MTenantServiceUpdateRequest
- MTenantServiceListResponse
+ MTenantServiceUpdateResponse
+
+
+
+
+
+
+ STenantService
+
+
+
+
+
+
+
+ metalstack/api/v2/tenant_member.proto
+
@@ -2695,36 +2781,6 @@ Table of Contents
-
- metalstack/cli/v2/project.proto
-
-
-
-
-
- metalstack/cli/v2/tenant.proto
-
-
-
-
metalstack/infra/v2/bmc.proto
@@ -15983,60 +16039,6 @@ ProjectInvite
- ProjectMember
- ProjectMember defines a user that participates in a project.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | id |
- string |
- |
- Id is the user id of the member. |
-
-
-
- | role |
- ProjectRole |
- |
- Role is the role of the member. |
-
-
-
- | inherited_membership |
- bool |
- |
- InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
-This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
-Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members. |
-
-
-
- | created_at |
- google.protobuf.Timestamp |
- |
- CreatedAt the date when the member was added to the project. |
-
-
-
- | meta |
- Meta |
- |
- Meta for this project member. |
-
-
-
-
-
-
-
-
-
ProjectQuery
ProjectQuery is used to search projects.
@@ -16082,8 +16084,8 @@ ProjectQuery
- ProjectServiceAddMemberRequest
- ProjectServiceAddMemberRequest is the request payload for adding a member to a project.
+ ProjectServiceCreateRequest
+ ProjectServiceCreateRequest is the request payload to Create a project.
@@ -16093,24 +16095,39 @@ ProjectServiceAddMembe
- | project |
+ login |
string |
|
- Project is the uuid of the project. |
+ Login is the tenant of this project.
+TODO: is login really a good name?. |
- | member |
+ name |
string |
|
- Login of the member to add. |
+ Name of this project, unique per tenant. |
- | role |
- ProjectRole |
+ description |
+ string |
|
- Role to assign to the new member. |
+ Description of this project. |
+
+
+
+ | avatar_url |
+ string |
+ optional |
+ Avatar URL of the project. |
+
+
+
+ | labels |
+ Labels |
+ |
+ Labels on the project. |
@@ -16120,8 +16137,8 @@ ProjectServiceAddMembe
- ProjectServiceAddMemberResponse
-
ProjectServiceAddMemberResponse is the response payload for the add member request.
+ ProjectServiceCreateResponse
+ ProjectServiceCreateResponse is the response payload of creation of a project.
@@ -16131,10 +16148,10 @@ ProjectServiceAddMemb
- | project_member |
- ProjectMember |
+ project |
+ Project |
|
- ProjectMember is the added project member. |
+ Project is the project. |
@@ -16144,8 +16161,8 @@ ProjectServiceAddMemb
- ProjectServiceCreateRequest
-
ProjectServiceCreateRequest is the request payload to Create a project.
+ ProjectServiceDeleteRequest
+ ProjectServiceDeleteRequest is the request payload to delete a project.
@@ -16155,87 +16172,10 @@ ProjectServiceCreateReque
- | login |
+ project |
string |
|
- Login is the tenant of this project.
-TODO: is login really a good name?. |
-
-
-
- | name |
- string |
- |
- Name of this project, unique per tenant. |
-
-
-
- | description |
- string |
- |
- Description of this project. |
-
-
-
- | avatar_url |
- string |
- optional |
- Avatar URL of the project. |
-
-
-
- | labels |
- Labels |
- |
- Labels on the project. |
-
-
-
-
-
-
-
-
-
- ProjectServiceCreateResponse
- ProjectServiceCreateResponse is the response payload of creation of a project.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project |
- Project |
- |
- Project is the project. |
-
-
-
-
-
-
-
-
-
- ProjectServiceDeleteRequest
- ProjectServiceDeleteRequest is the request payload to delete a project.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project |
- string |
- |
- Project is the uuid of the project to delete. |
+ Project is the uuid of the project to delete. |
@@ -16310,13 +16250,6 @@ ProjectServiceGetResponse
Project is the project. |
-
- | project_members |
- ProjectMember |
- repeated |
- ProjectMembers in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions. |
-
-
@@ -16570,37 +16503,6 @@ ProjectServiceInvit
- ProjectServiceLeaveRequest
-
ProjectServiceLeaveRequest is used to leave a project.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project |
- string |
- |
- Project is the uuid of the project. |
-
-
-
-
-
-
-
-
-
- ProjectServiceLeaveResponse
- ProjectServiceLeaveResponse is the response payload to a leave project request.
-
-
-
-
-
ProjectServiceListRequest
ProjectServiceListRequest is the request payload to list all projects.
@@ -16649,123 +16551,6 @@ ProjectServiceListResponse
- ProjectServiceRemoveMemberRequest
-
ProjectServiceRemoveMemberRequest is used to remove a member from a project.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project |
- string |
- |
- Project is the uuid of the project. |
-
-
-
- | member |
- string |
- |
- Member is the id of the member to remove from this project. |
-
-
-
-
-
-
-
-
-
- ProjectServiceRemoveMemberResponse
- ProjectServiceRemoveMemberResponse is the response payload to a remove member request.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project_member |
- ProjectMember |
- |
- ProjectMember is the removed project member. |
-
-
-
-
-
-
-
-
-
- ProjectServiceUpdateMemberRequest
- ProjectServiceUpdateMemberRequest is used to update a member of a project.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project |
- string |
- |
- Project is the uuid of the project. |
-
-
-
- | member |
- string |
- |
- Member is the id of the member to remove from this project. |
-
-
-
- | role |
- ProjectRole |
- |
- Role is the role in this project the user will get after the update. |
-
-
-
-
-
-
-
-
-
- ProjectServiceUpdateMemberResponse
- ProjectServiceUpdateMemberResponse is the response payload to a update member request.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project_member |
- ProjectMember |
- |
- ProjectMember is the updated project member. |
-
-
-
-
-
-
-
-
-
ProjectServiceUpdateRequest
ProjectServiceUpdateRequest is the request payload to update a project.
@@ -16898,34 +16683,6 @@ ProjectService
Update a project. |
-
- | Leave |
- ProjectServiceLeaveRequest |
- ProjectServiceLeaveResponse |
- Leave project. |
-
-
-
- | AddMember |
- ProjectServiceAddMemberRequest |
- ProjectServiceAddMemberResponse |
- AddMember adds a user to a project. |
-
-
-
- | RemoveMember |
- ProjectServiceRemoveMemberRequest |
- ProjectServiceRemoveMemberResponse |
- RemoveMember removes a user from a project. |
-
-
-
- | UpdateMember |
- ProjectServiceUpdateMemberRequest |
- ProjectServiceUpdateMemberResponse |
- UpdateMember updates a user for a project. |
-
-
| Invite |
ProjectServiceInviteRequest |
@@ -16968,13 +16725,13 @@ ProjectService
-
metalstack/admin/v2/project.proto
Top
+
metalstack/api/v2/project_member.proto
Top
- ProjectServiceCreateRequest
- ProjectServiceCreateRequest is the request payload to Create a project.
+ ProjectMember
+ ProjectMember defines a user that participates in a project.
@@ -16984,45 +16741,71 @@ ProjectServiceCreateReq
- | login |
+ member |
string |
|
- Login is the tenant of this project. |
+ Member is the user id of the member. |
- | name |
- string |
+ role |
+ ProjectRole |
|
- Name of this project, unique per tenant. |
+ Role is the role of the member. |
- | description |
- string |
+ inherited_membership |
+ bool |
|
- Description of this project. |
+ InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
+This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
+Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members. |
- | avatar_url |
- string |
- optional |
- Avatar URL of the project. |
+ created_at |
+ google.protobuf.Timestamp |
+ |
+ CreatedAt the date when the member was added to the project. |
- | labels |
- metalstack.api.v2.Labels |
+ meta |
+ Meta |
|
- Labels on the project. |
+ Meta for this project member. |
+
+
+
+
+
+
+
+ ProjectMemberQuery
+ ProjectQuery is used to search projects.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
- | project |
+ member |
string |
optional |
- Project is the uuid of the project. |
+ Member is the user id of the member. |
+
+
+
+ | role |
+ ProjectRole |
+ optional |
+ Role is the role of the member. |
@@ -17032,8 +16815,8 @@ ProjectServiceCreateReq
- ProjectServiceCreateResponse
-
ProjectServiceCreateResponse is the response payload for creating a project.
+ ProjectMemberServiceCreateRequest
+ ProjectMemberServiceCreateRequest is the request payload to Create a project.
@@ -17044,9 +16827,23 @@ ProjectServiceCreateRe
| project |
- metalstack.api.v2.Project |
+ string |
|
- Project contains the created project. |
+ Project is the uuid of the project. |
+
+
+
+ | member |
+ string |
+ |
+ Login of the member to add. |
+
+
+
+ | role |
+ ProjectRole |
+ |
+ Role to assign to the new member. |
@@ -17056,8 +16853,8 @@ ProjectServiceCreateRe
- ProjectServiceListRequest
-
ProjectServiceListRequest is the request payload for listing projects.
+ ProjectMemberServiceCreateResponse
+ ProjectMemberServiceCreateResponse is the response payload to create a project member.
@@ -17067,10 +16864,10 @@ ProjectServiceListRequest
- | query |
- metalstack.api.v2.ProjectQuery |
- optional |
- Query for projects. |
+ member |
+ ProjectMember |
+ |
+ Member is the created project member |
@@ -17080,8 +16877,8 @@ ProjectServiceListRequest
- ProjectServiceListResponse
-
ProjectServiceListResponse is the response payload for listing projects.
+ ProjectMemberServiceDeleteRequest
+ ProjectMemberServiceDeleteRequest is the request payload to delete a project.
@@ -17091,10 +16888,17 @@ ProjectServiceListRespon
- | projects |
- metalstack.api.v2.Project |
- repeated |
- Projects contains the list of projects. |
+ project |
+ string |
+ |
+ Project is the uuid of the project. |
+
+
+
+ | member |
+ string |
+ |
+ Member is the id of the member to remove from this project. |
@@ -17104,48 +16908,32 @@ ProjectServiceListRespon
+ ProjectMemberServiceDeleteResponse
+
ProjectMemberServiceDeleteResponse is the response payload to delete a project member.
-
-
-
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | member |
+ ProjectMember |
+ |
+ Member is the deleted project member |
+
+
+
+
-
- ProjectService
- ProjectService provides project management operations.
-
+
-
-
-
-
metalstack/admin/v2/size.proto
Top
-
-
-
- SizeServiceCreateRequest
- SizeServiceCreateRequest is the request payload for creating a size.
+ ProjectMemberServiceGetRequest
+ ProjectMemberServiceGetRequest is the request payload to get a project.
@@ -17155,10 +16943,17 @@ SizeServiceCreateRequest
- | size |
- metalstack.api.v2.Size |
+ project |
+ string |
|
- Size is the size to create. |
+ Project is the uuid of the project. |
+
+
+
+ | member |
+ string |
+ |
+ Member is the user id of the member. |
@@ -17168,8 +16963,8 @@ SizeServiceCreateRequest
- SizeServiceCreateResponse
-
SizeServiceCreateResponse is the response payload for creating a size.
+ ProjectMemberServiceGetResponse
+ ProjectMemberServiceGetResponse is the response payload to get a projects.
@@ -17179,10 +16974,10 @@ SizeServiceCreateResponse
- | size |
- metalstack.api.v2.Size |
- |
- Size contains the created size. |
+ member |
+ ProjectMember |
+ repeated |
+ Member in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions. |
@@ -17192,8 +16987,8 @@ SizeServiceCreateResponse
- SizeServiceDeleteRequest
-
SizeServiceDeleteRequest is the request payload for deleting a size.
+ ProjectMemberServiceLeaveRequest
+ ProjectMemberServiceLeaveRequest is used to leave a project. This way a member is not required to ask a project owner to remove him.
@@ -17203,10 +16998,10 @@ SizeServiceDeleteRequest
- | id |
+ project |
string |
|
- ID of the size to delete. |
+ Project of the uuid of the project that the user wants to leave. |
@@ -17216,8 +17011,8 @@ SizeServiceDeleteRequest
- SizeServiceDeleteResponse
-
SizeServiceDeleteResponse is the response payload for deleting a size.
+ ProjectMemberServiceLeaveResponse
+ ProjectMemberServiceLeaveResponse is the response payload to a leave project request.
@@ -17227,10 +17022,10 @@ SizeServiceDeleteResponse
- | size |
- metalstack.api.v2.Size |
+ member |
+ ProjectMember |
|
- Size contains the deleted size. |
+ Member is the member of this project. |
@@ -17240,8 +17035,8 @@ SizeServiceDeleteResponse
- SizeServiceUpdateRequest
-
SizeServiceUpdateRequest is the request payload for updating a size.
+ ProjectMemberServiceListRequest
+ ProjectMemberServiceListRequest is the request payload to list all project members.
@@ -17251,45 +17046,86 @@ SizeServiceUpdateRequest
- | id |
+ project |
string |
|
- Id of this size. |
+ Project is the uuid of the project. |
- | update_meta |
- metalstack.api.v2.UpdateMeta |
+ query |
+ ProjectMemberQuery |
|
- UpdateMeta contains the timestamp and strategy to be used in this update request. |
+ Query for projects. |
+
+
+
+
+
+
+
+ ProjectMemberServiceListResponse
+ ProjectMemberServiceListResponse is the response payload to list all project members.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
- | name |
+ members |
+ ProjectMember |
+ repeated |
+ Members is a list of project members. |
+
+
+
+
+
+
+
+
+
+ ProjectMemberServiceUpdateRequest
+ ProjectMemberServiceUpdateRequest is the request payload to update a project.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | project |
string |
- optional |
- Name of this size. |
+ |
+ Project is the uuid of the project. |
- | description |
+ member |
string |
- optional |
- Description of this size. |
+ |
+ Member is the id of the member to remove from this project. |
- | constraints |
- metalstack.api.v2.SizeConstraint |
- repeated |
- Constraints which must match that a specific machine is considered of this size. |
+ role |
+ ProjectRole |
+ |
+ Role is the role in this project the user will get after the update. |
- | labels |
- metalstack.api.v2.UpdateLabels |
- optional |
- Labels to update on this size. |
+ update_meta |
+ UpdateMeta |
+ |
+ UpdateMeta contains the timestamp and strategy to be used in this update request. |
@@ -17299,8 +17135,8 @@ SizeServiceUpdateRequest
- SizeServiceUpdateResponse
-
SizeServiceUpdateResponse is the response payload for updating a size.
+ ProjectMemberServiceUpdateResponse
+ ProjectMemberServiceUpdateResponse is the response payload to update a project member.
@@ -17310,10 +17146,10 @@ SizeServiceUpdateResponse
- | size |
- metalstack.api.v2.Size |
+ member |
+ ProjectMember |
|
- Size contains the updated size. |
+ Member is the updated project member |
@@ -17329,8 +17165,8 @@ SizeServiceUpdateResponse
- SizeService
-
SizeService provides size management operations.
+ ProjectMemberService
+ ProjectMemberService provides project management operations.
| Method Name | Request Type | Response Type | Description |
@@ -17338,24 +17174,45 @@ SizeService
- | Create |
- SizeServiceCreateRequest |
- SizeServiceCreateResponse |
- Creates a new size. |
+ List |
+ ProjectMemberServiceListRequest |
+ ProjectMemberServiceListResponse |
+ Returns the list of project members. |
- | Update |
- SizeServiceUpdateRequest |
- SizeServiceUpdateResponse |
- Updates a size. |
+ Get |
+ ProjectMemberServiceGetRequest |
+ ProjectMemberServiceGetResponse |
+ Returns the project member of the project. |
+
+
+
+ | Create |
+ ProjectMemberServiceCreateRequest |
+ ProjectMemberServiceCreateResponse |
+ Create a project member. |
| Delete |
- SizeServiceDeleteRequest |
- SizeServiceDeleteResponse |
- Deletes a size. |
+ ProjectMemberServiceDeleteRequest |
+ ProjectMemberServiceDeleteResponse |
+ Delete a project member. |
+
+
+
+ | Update |
+ ProjectMemberServiceUpdateRequest |
+ ProjectMemberServiceUpdateResponse |
+ Update a project member. |
+
+
+
+ | Leave |
+ ProjectMemberServiceLeaveRequest |
+ ProjectMemberServiceLeaveResponse |
+ Leave a project. |
@@ -17365,13 +17222,13 @@ SizeService
-
metalstack/api/v2/size_imageconstraint.proto
Top
+
metalstack/admin/v2/project.proto
Top
- ImageConstraint
- ImageConstraint defines a constraint for an image.
Examples:
images:
ubuntu: ">= 20.04.20211011
debian: ">= 10.0.20210101
+ ProjectServiceAddMemberRequest
+ ProjectServiceAddMemberRequest is the request payload for adding a member to a tenant.
@@ -17381,69 +17238,24 @@ ImageConstraint
- | image |
- string |
- |
- Image of the constraint. |
-
-
-
- | semver_match |
+ project |
string |
|
- SemverMatch which defines in semver match format which image version should apply. |
+ Project is the uuid of the project. |
-
-
-
-
-
-
-
- SizeImageConstraint
- SizeImageConstraint expresses optional restrictions for specific size to image combinations.
This might be required if the support for a specific hardware in a given size is only supported with a newer version of the image.
If the size in question is not found, no restrictions apply.
If the image in question is not found, no restrictions apply as well.
If the image in question is found, but does not match the given expression, machine creation must be forbidden.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
- | size |
+ member |
string |
|
- Size where this constraint should apply. |
-
-
-
- | image_constraints |
- ImageConstraint |
- repeated |
- ImageConstraints to apply to this size. |
+ Login of the member to add. |
- | meta |
- Meta |
+ role |
+ metalstack.api.v2.ProjectRole |
|
- Meta for this size image constraint. |
-
-
-
- | name |
- string |
- optional |
- Name of this size image constraint. |
-
-
-
- | description |
- string |
- optional |
- Description of this size image constraint. |
+ Role to assign to the new member. |
@@ -17453,8 +17265,8 @@ SizeImageConstraint
- SizeImageConstraintQuery
- SizeImageConstraintQuery is used to search size image constraints.
+ ProjectServiceAddMemberResponse
+ ProjectServiceAddMemberResponse is the response payload for the add member request.
@@ -17464,24 +17276,10 @@ SizeImageConstraintQuery
- | size |
- string |
- optional |
- Size of the size image constraint. |
-
-
-
- | name |
- string |
- optional |
- Name of the size image constraint to query. |
-
-
-
- | description |
- string |
- optional |
- Description of the size image constraint to query. |
+ member |
+ metalstack.api.v2.ProjectMember |
+ |
+ Member is the added project member. |
@@ -17491,8 +17289,8 @@ SizeImageConstraintQuery
SizeImageConstraintServiceTryRequest
- SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request.
+ ProjectServiceCreateRequest
+ ProjectServiceCreateRequest is the request payload to Create a project.
@@ -17502,109 +17300,45 @@ SizeImageConstra
- | size |
+ login |
string |
|
- Size to try. |
+ Login is the tenant of this project. |
- | image |
+ name |
string |
|
- Image to try. |
+ Name of this project, unique per tenant. |
-
-
-
-
-
-
-
- SizeImageConstraintServiceTryResponse
- SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request.
-
-
-
-
-
-
-
-
-
-
-
- SizeImageConstraintService
- SizeImageConstraintService provides size and image constraint validation operations.
-
-
-
-
-
-
-
metalstack/admin/v2/size_imageconstraint.proto
Top
-
-
-
-
- SizeImageConstraintServiceCreateRequest
- SizeImageConstraintServiceCreateRequest is the request payload for creating a size image constraint.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
- | size |
+ description |
string |
|
- Size of the constraint. |
+ Description of this project. |
- | image_constraints |
- metalstack.api.v2.ImageConstraint |
- repeated |
- ImageConstraints to apply to this size. |
+ avatar_url |
+ string |
+ optional |
+ Avatar URL of the project. |
- | meta |
- metalstack.api.v2.Meta |
+ labels |
+ metalstack.api.v2.Labels |
|
- Meta for this size image constraint. |
-
-
-
- | name |
- string |
- optional |
- Name of this size image constraint. |
+ Labels on the project. |
- | description |
+ project |
string |
optional |
- Description of this size image constraint. |
+ Project is the uuid of the project. |
@@ -17614,8 +17348,8 @@ SizeImageCo
- SizeImageConstraintServiceCreateResponse
-
SizeImageConstraintServiceCreateResponse is the response payload for creating a size image constraint.
+ ProjectServiceCreateResponse
+ ProjectServiceCreateResponse is the response payload for creating a project.
@@ -17625,10 +17359,10 @@ SizeImageC
- | size_image_constraint |
- metalstack.api.v2.SizeImageConstraint |
+ project |
+ metalstack.api.v2.Project |
|
- SizeImageConstraint contains the created constraint. |
+ Project contains the created project. |
@@ -17638,8 +17372,8 @@ SizeImageC
- SizeImageConstraintServiceDeleteRequest
-
SizeImageConstraintServiceDeleteRequest is the request payload for deleting a size image constraint.
+ ProjectServiceListRequest
+ ProjectServiceListRequest is the request payload for listing projects.
@@ -17649,10 +17383,10 @@ SizeImageCo
- | size |
- string |
- |
- Size of the constraint. |
+ query |
+ metalstack.api.v2.ProjectQuery |
+ optional |
+ Query for projects. |
@@ -17662,8 +17396,8 @@ SizeImageCo
- SizeImageConstraintServiceDeleteResponse
-
SizeImageConstraintServiceDeleteResponse is the response payload for deleting a size image constraint.
+ ProjectServiceListResponse
+ ProjectServiceListResponse is the response payload for listing projects.
@@ -17673,10 +17407,10 @@ SizeImageC
- | size_image_constraint |
- metalstack.api.v2.SizeImageConstraint |
- |
- SizeImageConstraint contains the deleted constraint. |
+ projects |
+ metalstack.api.v2.Project |
+ repeated |
+ Projects contains the list of projects. |
@@ -17686,8 +17420,8 @@ SizeImageC
- SizeImageConstraintServiceGetRequest
-
SizeImageConstraintServiceGetRequest is the request payload for getting a size image constraint.
+ ProjectServiceRemoveMemberRequest
+ ProjectServiceRemoveMemberRequest is the request payload for removing a member from a project.
@@ -17697,10 +17431,17 @@ SizeImageConst
- | size |
+ project |
string |
|
- Size of the constraint. |
+ Project is the uuid of the project. |
+
+
+
+ | member |
+ string |
+ |
+ Login of the member to remove. |
@@ -17710,8 +17451,8 @@ SizeImageConst
- SizeImageConstraintServiceGetResponse
-
SizeImageConstraintServiceGetResponse is the response payload for getting a size image constraint.
+ ProjectServiceRemoveMemberResponse
+ ProjectServiceRemoveMemberResponse is the response payload for the remove member request.
@@ -17721,10 +17462,10 @@ SizeImageCons
- | size_image_constraint |
- metalstack.api.v2.SizeImageConstraint |
+ member |
+ metalstack.api.v2.ProjectMember |
|
- SizeImageConstraint contains the retrieved constraint. |
+ Member is the removed project member. |
@@ -17734,8 +17475,62 @@ SizeImageCons
- SizeImageConstraintServiceListRequest
-
SizeImageConstraintServiceListRequest is the request payload for listing size image constraints.
+
+
+
+
+
+
+ ProjectService
+ ProjectService provides project management operations.
+
+
+
+
+
+
+
metalstack/admin/v2/size.proto
Top
+
+
+
+
+ SizeServiceCreateRequest
+ SizeServiceCreateRequest is the request payload for creating a size.
@@ -17745,10 +17540,10 @@ SizeImageCons
- | query |
- metalstack.api.v2.SizeImageConstraintQuery |
+ size |
+ metalstack.api.v2.Size |
|
- Query for size image constraints. |
+ Size is the size to create. |
@@ -17758,8 +17553,8 @@ SizeImageCons
- SizeImageConstraintServiceListResponse
-
SizeImageConstraintServiceListResponse is the response payload for listing size image constraints.
+ SizeServiceCreateResponse
+ SizeServiceCreateResponse is the response payload for creating a size.
@@ -17769,10 +17564,10 @@ SizeImageCon
- | size_image_constraints |
- metalstack.api.v2.SizeImageConstraint |
- repeated |
- SizeImageConstraints contains the list of constraints. |
+ size |
+ metalstack.api.v2.Size |
+ |
+ Size contains the created size. |
@@ -17782,8 +17577,32 @@ SizeImageCon
- SizeImageConstraintServiceUpdateRequest
-
SizeImageConstraintServiceUpdateRequest is the request payload for updating a size image constraint.
+ SizeServiceDeleteRequest
+ SizeServiceDeleteRequest is the request payload for deleting a size.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ |
+ ID of the size to delete. |
+
+
+
+
+
+
+
+
+
+ SizeServiceDeleteResponse
+ SizeServiceDeleteResponse is the response payload for deleting a size.
@@ -17794,9 +17613,33 @@ SizeImageCo
| size |
+ metalstack.api.v2.Size |
+ |
+ Size contains the deleted size. |
+
+
+
+
+
+
+
+
+
+ SizeServiceUpdateRequest
+ SizeServiceUpdateRequest is the request payload for updating a size.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
string |
|
- Size of the image constraint to update. |
+ Id of this size. |
@@ -17806,25 +17649,32 @@ SizeImageCo
UpdateMeta contains the timestamp and strategy to be used in this update request. |
-
- | image_constraints |
- metalstack.api.v2.ImageConstraint |
- repeated |
- ImageConstraints to apply to this size. |
-
-
| name |
string |
optional |
- Name of this size image constraint. |
+ Name of this size. |
| description |
string |
optional |
- Description of this size image constraint. |
+ Description of this size. |
+
+
+
+ | constraints |
+ metalstack.api.v2.SizeConstraint |
+ repeated |
+ Constraints which must match that a specific machine is considered of this size. |
+
+
+
+ | labels |
+ metalstack.api.v2.UpdateLabels |
+ optional |
+ Labels to update on this size. |
@@ -17834,8 +17684,8 @@ SizeImageCo
- SizeImageConstraintServiceUpdateResponse
-
SizeImageConstraintServiceUpdateResponse is the response payload for updating a size image constraint.
+ SizeServiceUpdateResponse
+ SizeServiceUpdateResponse is the response payload for updating a size.
@@ -17845,10 +17695,10 @@ SizeImageC
- | size_image_constraint |
- metalstack.api.v2.SizeImageConstraint |
+ size |
+ metalstack.api.v2.Size |
|
- SizeImageConstraint contains the updated constraint. |
+ Size contains the updated size. |
@@ -17864,8 +17714,8 @@ SizeImageC
- SizeImageConstraintService
-
SizeImageConstraintService provides size and image constraint management operations.
+ SizeService
+ SizeService provides size management operations.
| Method Name | Request Type | Response Type | Description |
@@ -17874,37 +17724,23 @@ SizeImageConstraintServi
| Create |
- SizeImageConstraintServiceCreateRequest |
- SizeImageConstraintServiceCreateResponse |
- Creates a size image constraint. |
+ SizeServiceCreateRequest |
+ SizeServiceCreateResponse |
+ Creates a new size. |
| Update |
- SizeImageConstraintServiceUpdateRequest |
- SizeImageConstraintServiceUpdateResponse |
- Updates a size image constraint. |
+ SizeServiceUpdateRequest |
+ SizeServiceUpdateResponse |
+ Updates a size. |
| Delete |
- SizeImageConstraintServiceDeleteRequest |
- SizeImageConstraintServiceDeleteResponse |
- Deletes a size image constraint. |
-
-
-
- | Get |
- SizeImageConstraintServiceGetRequest |
- SizeImageConstraintServiceGetResponse |
- Returns the size image constraint with the specified size. |
-
-
-
- | List |
- SizeImageConstraintServiceListRequest |
- SizeImageConstraintServiceListResponse |
- Returns the list of size image constraints. |
+ SizeServiceDeleteRequest |
+ SizeServiceDeleteResponse |
+ Deletes a size. |
@@ -17914,13 +17750,13 @@ SizeImageConstraintServi
-
metalstack/api/v2/size_reservation.proto
Top
+
metalstack/api/v2/size_imageconstraint.proto
Top
- SizeReservation
- SizeReservation.
+ ImageConstraint
+ ImageConstraint defines a constraint for an image.
Examples:
images:
ubuntu: ">= 20.04.20211011
debian: ">= 10.0.20210101
@@ -17930,59 +17766,17 @@ SizeReservation
- | id |
- string |
- |
- Id of this size reservation, is generated on creation. |
-
-
-
- | meta |
- Meta |
- |
- Meta for this size reservation. |
-
-
-
- | name |
- string |
- |
- Name of this size reservation. |
-
-
-
- | description |
- string |
- |
- Description of this size reservation. |
-
-
-
- | project |
- string |
- |
- Project of the size reservation. |
-
-
-
- | size |
+ image |
string |
|
- Size id of this size reservation. |
+ Image of the constraint. |
- | partitions |
+ semver_match |
string |
- repeated |
- Partition ids of this size reservation. |
-
-
-
- | amount |
- int32 |
|
- Amount of reservations of this size reservation. |
+ SemverMatch which defines in semver match format which image version should apply. |
@@ -17992,8 +17786,8 @@ SizeReservation
- SizeReservationQuery
- SizeReservationQuery is used to search size reservations.
+ SizeImageConstraint
+ SizeImageConstraint expresses optional restrictions for specific size to image combinations.
This might be required if the support for a specific hardware in a given size is only supported with a newer version of the image.
If the size in question is not found, no restrictions apply.
If the image in question is not found, no restrictions apply as well.
If the image in question is found, but does not match the given expression, machine creation must be forbidden.
@@ -18003,52 +17797,38 @@ SizeReservationQuery
- | id |
+ size |
string |
- optional |
- ID of the size reservation to get. |
-
-
-
- | name |
- string |
- optional |
- Name of this size reservation. |
+ |
+ Size where this constraint should apply. |
- | description |
- string |
- optional |
- Description of this size reservation. |
+ image_constraints |
+ ImageConstraint |
+ repeated |
+ ImageConstraints to apply to this size. |
- | size |
- string |
- optional |
- Size id of this size reservation. |
+ meta |
+ Meta |
+ |
+ Meta for this size image constraint. |
- | project |
+ name |
string |
optional |
- Project of the size reservation. |
+ Name of this size image constraint. |
- | partition |
+ description |
string |
optional |
- Partition of the size reservation. |
-
-
-
- | labels |
- Labels |
- optional |
- Labels lists only size reservations containing the given labels. |
+ Description of this size image constraint. |
@@ -18058,8 +17838,8 @@ SizeReservationQuery
- SizeReservationServiceGetRequest
- SizeReservationServiceGetRequest is the request payload for a size get request.
+ SizeImageConstraintQuery
+ SizeImageConstraintQuery is used to search size image constraints.
@@ -18069,41 +17849,24 @@ SizeReservationServi
- | id |
+ size |
string |
- |
- ID of the size reservation to get. |
+ optional |
+ Size of the size image constraint. |
- | project |
+ name |
string |
- |
- Project of the size reservation. |
+ optional |
+ Name of the size image constraint to query. |
-
-
-
-
-
-
-
- SizeReservationServiceGetResponse
- SizeReservationServiceGetResponse is the response payload for a size reservation get request.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
- | size_reservation |
- SizeReservation |
- |
- Size reservation. |
+ description |
+ string |
+ optional |
+ Description of the size image constraint to query. |
@@ -18113,8 +17876,8 @@ SizeReservationServ
- SizeReservationServiceListRequest
-
SizeReservationServiceListRequest is the request payload for a size list request.
+ SizeImageConstraintServiceTryRequest
+ SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request.
@@ -18124,17 +17887,17 @@ SizeReservationServ
- | project |
+ size |
string |
|
- Project of the size reservation. |
+ Size to try. |
- | query |
- SizeReservationQuery |
+ image |
+ string |
|
- Query for size reservations. |
+ Image to try. |
@@ -18144,27 +17907,10 @@ SizeReservationServ
- SizeReservationServiceListResponse
-
SizeReservationServiceListResponse is the response payload for a size reservation list request.
+ SizeImageConstraintServiceTryResponse
+ SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request.
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | size_reservations |
- SizeReservation |
- repeated |
- Size reservations. |
-
-
-
-
-
-
@@ -18174,8 +17920,8 @@ SizeReservationSer
- SizeReservationService
-
SizeReservationService provides size reservation management operations.
+ SizeImageConstraintService
+ SizeImageConstraintService provides size and image constraint validation operations.
| Method Name | Request Type | Response Type | Description |
@@ -18183,17 +17929,10 @@ SizeReservationService
- | Get |
- SizeReservationServiceGetRequest |
- SizeReservationServiceGetResponse |
- Returns the size reservation with the specified ID. |
-
-
-
- | List |
- SizeReservationServiceListRequest |
- SizeReservationServiceListResponse |
- Returns the list of size reservations. |
+ Try |
+ SizeImageConstraintServiceTryRequest |
+ SizeImageConstraintServiceTryResponse |
+ Try validates if a given combination of size and image is possible. |
@@ -18203,13 +17942,13 @@ SizeReservationService
-
metalstack/admin/v2/size_reservation.proto
Top
+
metalstack/admin/v2/size_imageconstraint.proto
Top
- SizeReservationServiceCreateRequest
- SizeReservationServiceCreateRequest is the request payload for creating a size reservation.
+ SizeImageConstraintServiceCreateRequest
+ SizeImageConstraintServiceCreateRequest is the request payload for creating a size image constraint.
@@ -18219,10 +17958,38 @@ SizeReservation
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ size |
+ string |
|
- SizeReservation is the size reservation to create. |
+ Size of the constraint. |
+
+
+
+ | image_constraints |
+ metalstack.api.v2.ImageConstraint |
+ repeated |
+ ImageConstraints to apply to this size. |
+
+
+
+ | meta |
+ metalstack.api.v2.Meta |
+ |
+ Meta for this size image constraint. |
+
+
+
+ | name |
+ string |
+ optional |
+ Name of this size image constraint. |
+
+
+
+ | description |
+ string |
+ optional |
+ Description of this size image constraint. |
@@ -18232,8 +17999,8 @@ SizeReservation
- SizeReservationServiceCreateResponse
-
SizeReservationServiceCreateResponse is the response payload for creating a size reservation.
+ SizeImageConstraintServiceCreateResponse
+ SizeImageConstraintServiceCreateResponse is the response payload for creating a size image constraint.
@@ -18243,10 +18010,10 @@ SizeReservatio
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ size_image_constraint |
+ metalstack.api.v2.SizeImageConstraint |
|
- SizeReservation contains the created reservation. |
+ SizeImageConstraint contains the created constraint. |
@@ -18256,8 +18023,8 @@ SizeReservatio
- SizeReservationServiceDeleteRequest
-
SizeReservationServiceDeleteRequest is the request payload for deleting a size reservation.
+ SizeImageConstraintServiceDeleteRequest
+ SizeImageConstraintServiceDeleteRequest is the request payload for deleting a size image constraint.
@@ -18267,10 +18034,10 @@ SizeReservation
- | id |
+ size |
string |
|
- ID of the size reservation to delete. |
+ Size of the constraint. |
@@ -18280,8 +18047,8 @@ SizeReservation
- SizeReservationServiceDeleteResponse
-
SizeReservationServiceDeleteResponse is the response payload for deleting a size reservation.
+ SizeImageConstraintServiceDeleteResponse
+ SizeImageConstraintServiceDeleteResponse is the response payload for deleting a size image constraint.
@@ -18291,10 +18058,10 @@ SizeReservatio
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ size_image_constraint |
+ metalstack.api.v2.SizeImageConstraint |
|
- SizeReservation contains the deleted reservation. |
+ SizeImageConstraint contains the deleted constraint. |
@@ -18304,8 +18071,8 @@ SizeReservatio
- SizeReservationServiceListRequest
-
SizeReservationServiceListRequest is the request payload for listing size reservations.
+ SizeImageConstraintServiceGetRequest
+ SizeImageConstraintServiceGetRequest is the request payload for getting a size image constraint.
@@ -18315,10 +18082,10 @@ SizeReservationSe
- | query |
- metalstack.api.v2.SizeReservationQuery |
+ size |
+ string |
|
- Query for size reservations. |
+ Size of the constraint. |
@@ -18328,8 +18095,8 @@ SizeReservationSe
- SizeReservationServiceListResponse
-
SizeReservationServiceListResponse is the response payload for listing size reservations.
+ SizeImageConstraintServiceGetResponse
+ SizeImageConstraintServiceGetResponse is the response payload for getting a size image constraint.
@@ -18339,10 +18106,10 @@ SizeReservationS
- | size_reservations |
- metalstack.api.v2.SizeReservation |
- repeated |
- SizeReservations contains the list of reservations. |
+ size_image_constraint |
+ metalstack.api.v2.SizeImageConstraint |
+ |
+ SizeImageConstraint contains the retrieved constraint. |
@@ -18352,8 +18119,8 @@ SizeReservationS
- SizeReservationServiceUpdateRequest
-
SizeReservationServiceUpdateRequest is the request payload for updating a size reservation.
+ SizeImageConstraintServiceListRequest
+ SizeImageConstraintServiceListRequest is the request payload for listing size image constraints.
+
+
+
+
+
+ SizeImageConstraintServiceListResponse
+ SizeImageConstraintServiceListResponse is the response payload for listing size image constraints.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
- | name |
- string |
- optional |
- Name of this size reservation. |
+ size_image_constraints |
+ metalstack.api.v2.SizeImageConstraint |
+ repeated |
+ SizeImageConstraints contains the list of constraints. |
+
+
+
+
+
+
+
+ SizeImageConstraintServiceUpdateRequest
+ SizeImageConstraintServiceUpdateRequest is the request payload for updating a size image constraint.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
- | description |
+ size |
string |
- optional |
- Description of this size reservation. |
+ |
+ Size of the image constraint to update. |
@@ -18391,24 +18192,24 @@ SizeReservation
- | partitions |
- string |
+ image_constraints |
+ metalstack.api.v2.ImageConstraint |
repeated |
- Partition ids of this size reservation. |
+ ImageConstraints to apply to this size. |
- | amount |
- int32 |
+ name |
+ string |
optional |
- Amount of reservations of this size reservation. |
+ Name of this size image constraint. |
- | labels |
- metalstack.api.v2.UpdateLabels |
+ description |
+ string |
optional |
- Labels to update of this size reservation. |
+ Description of this size image constraint. |
@@ -18418,8 +18219,8 @@ SizeReservation
- SizeReservationServiceUpdateResponse
-
SizeReservationServiceUpdateResponse is the response payload for updating a size reservation.
+ SizeImageConstraintServiceUpdateResponse
+ SizeImageConstraintServiceUpdateResponse is the response payload for updating a size image constraint.
@@ -18429,10 +18230,10 @@ SizeReservatio
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ size_image_constraint |
+ metalstack.api.v2.SizeImageConstraint |
|
- SizeReservation contains the updated reservation. |
+ SizeImageConstraint contains the updated constraint. |
@@ -18448,8 +18249,8 @@ SizeReservatio
- SizeReservationService
-
SizeReservationService provides size reservation management operations.
+ SizeImageConstraintService
+ SizeImageConstraintService provides size and image constraint management operations.
| Method Name | Request Type | Response Type | Description |
@@ -18458,30 +18259,37 @@ SizeReservationService
| Create |
- SizeReservationServiceCreateRequest |
- SizeReservationServiceCreateResponse |
- Creates a new size reservation. |
+ SizeImageConstraintServiceCreateRequest |
+ SizeImageConstraintServiceCreateResponse |
+ Creates a size image constraint. |
| Update |
- SizeReservationServiceUpdateRequest |
- SizeReservationServiceUpdateResponse |
- Updates a size reservation. |
+ SizeImageConstraintServiceUpdateRequest |
+ SizeImageConstraintServiceUpdateResponse |
+ Updates a size image constraint. |
| Delete |
- SizeReservationServiceDeleteRequest |
- SizeReservationServiceDeleteResponse |
- Deletes a size reservation. |
+ SizeImageConstraintServiceDeleteRequest |
+ SizeImageConstraintServiceDeleteResponse |
+ Deletes a size image constraint. |
+
+
+
+ | Get |
+ SizeImageConstraintServiceGetRequest |
+ SizeImageConstraintServiceGetResponse |
+ Returns the size image constraint with the specified size. |
| List |
- SizeReservationServiceListRequest |
- SizeReservationServiceListResponse |
- Returns the list of size reservations. |
+ SizeImageConstraintServiceListRequest |
+ SizeImageConstraintServiceListResponse |
+ Returns the list of size image constraints. |
@@ -18491,13 +18299,13 @@ SizeReservationService
-
metalstack/admin/v2/switch.proto
Top
+
metalstack/api/v2/size_reservation.proto
Top
- SwitchServiceConnectedMachinesRequest
- SwitchServiceConnectedMachinesRequest is the request payload for listing switches with machine connections.
+ SizeReservation
+ SizeReservation.
@@ -18507,17 +18315,59 @@ SwitchService
- | query |
- metalstack.api.v2.SwitchQuery |
+ id |
+ string |
|
- Query to filter the switch results. |
+ Id of this size reservation, is generated on creation. |
- | machine_query |
- metalstack.api.v2.MachineQuery |
+ meta |
+ Meta |
|
- MachineQuery to filter the machine results. |
+ Meta for this size reservation. |
+
+
+
+ | name |
+ string |
+ |
+ Name of this size reservation. |
+
+
+
+ | description |
+ string |
+ |
+ Description of this size reservation. |
+
+
+
+ | project |
+ string |
+ |
+ Project of the size reservation. |
+
+
+
+ | size |
+ string |
+ |
+ Size id of this size reservation. |
+
+
+
+ | partitions |
+ string |
+ repeated |
+ Partition ids of this size reservation. |
+
+
+
+ | amount |
+ int32 |
+ |
+ Amount of reservations of this size reservation. |
@@ -18527,8 +18377,8 @@ SwitchService
- SwitchServiceConnectedMachinesResponse
-
SwitchServiceConnectedMachinesResponse is the response payload for listing switches with machine connections.
+ SizeReservationQuery
+ SizeReservationQuery is used to search size reservations.
@@ -18538,10 +18388,52 @@ SwitchServic
- | switches_with_machines |
- metalstack.api.v2.SwitchWithMachines |
- repeated |
- SwitchesWithMachines contains all switches with their machine connections. |
+ id |
+ string |
+ optional |
+ ID of the size reservation to get. |
+
+
+
+ | name |
+ string |
+ optional |
+ Name of this size reservation. |
+
+
+
+ | description |
+ string |
+ optional |
+ Description of this size reservation. |
+
+
+
+ | size |
+ string |
+ optional |
+ Size id of this size reservation. |
+
+
+
+ | project |
+ string |
+ optional |
+ Project of the size reservation. |
+
+
+
+ | partition |
+ string |
+ optional |
+ Partition of the size reservation. |
+
+
+
+ | labels |
+ Labels |
+ optional |
+ Labels lists only size reservations containing the given labels. |
@@ -18551,8 +18443,8 @@ SwitchServic
- SwitchServiceDeleteRequest
-
SwitchServiceDeleteRequest is the request payload for deleting a switch.
+ SizeReservationServiceGetRequest
+ SizeReservationServiceGetRequest is the request payload for a size get request.
@@ -18565,14 +18457,14 @@ SwitchServiceDeleteReque
| id |
string |
|
- Id of the switch. |
+ ID of the size reservation to get. |
- | force |
- bool |
+ project |
+ string |
|
- Force will allow switch deletion despite existing machine connections. |
+ Project of the size reservation. |
@@ -18582,8 +18474,8 @@ SwitchServiceDeleteReque
- SwitchServiceDeleteResponse
-
SwitchServiceDeleteResponse is the response payload for deleting a switch.
+ SizeReservationServiceGetResponse
+ SizeReservationServiceGetResponse is the response payload for a size reservation get request.
@@ -18593,10 +18485,10 @@ SwitchServiceDeleteResp
- | switch |
- metalstack.api.v2.Switch |
+ size_reservation |
+ SizeReservation |
|
- Switch contains the deleted switch. |
+ Size reservation. |
@@ -18606,8 +18498,8 @@ SwitchServiceDeleteResp
- SwitchServiceGetRequest
-
SwitchServiceGetRequest is the request payload for getting a switch.
+ SizeReservationServiceListRequest
+ SizeReservationServiceListRequest is the request payload for a size list request.
@@ -18617,10 +18509,17 @@ SwitchServiceGetRequest
- | id |
+ project |
string |
|
- Id of the switch to get. |
+ Project of the size reservation. |
+
+
+
+ | query |
+ SizeReservationQuery |
+ |
+ Query for size reservations. |
@@ -18630,8 +18529,8 @@ SwitchServiceGetRequest
SwitchServiceGetResponse
- SwitchServiceGetResponse is the response payload for getting a switch.
+ SizeReservationServiceListResponse
+ SizeReservationServiceListResponse is the response payload for a size reservation list request.
@@ -18641,10 +18540,10 @@ SwitchServiceGetResponse
- | switch |
- metalstack.api.v2.Switch |
- |
- Switch contains the requested switch. |
+ size_reservations |
+ SizeReservation |
+ repeated |
+ Size reservations. |
@@ -18654,8 +18553,48 @@ SwitchServiceGetResponse
- SwitchServiceListRequest
-
SwitchServiceListRequest is the request payload for listing switches.
+
+
+
+
+
+
+ SizeReservationService
+ SizeReservationService provides size reservation management operations.
+
+
+
+
+
+
+
metalstack/admin/v2/size_reservation.proto
Top
+
+
+
+
+ SizeReservationServiceCreateRequest
+ SizeReservationServiceCreateRequest is the request payload for creating a size reservation.
@@ -18665,10 +18604,10 @@ SwitchServiceListRequest
- | query |
- metalstack.api.v2.SwitchQuery |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- Query to filter the results. |
+ SizeReservation is the size reservation to create. |
@@ -18678,8 +18617,8 @@ SwitchServiceListRequest
- SwitchServiceListResponse
-
SwitchServiceListResponse is the response payload for listing switches.
+ SizeReservationServiceCreateResponse
+ SizeReservationServiceCreateResponse is the response payload for creating a size reservation.
@@ -18689,10 +18628,10 @@ SwitchServiceListResponse
- | switches |
- metalstack.api.v2.Switch |
- repeated |
- Switches that match the request query. |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
+ |
+ SizeReservation contains the created reservation. |
@@ -18702,8 +18641,8 @@ SwitchServiceListResponse
- SwitchServiceMigrateRequest
-
SwitchServiceMigrateRequest is the request payload for migrating a switch.
+ SizeReservationServiceDeleteRequest
+ SizeReservationServiceDeleteRequest is the request payload for deleting a size reservation.
@@ -18713,17 +18652,10 @@ SwitchServiceMigrateReq
- | old_switch |
- string |
- |
- OldSwitch is the switch to migrate away from. |
-
-
-
- | new_switch |
+ id |
string |
|
- NewSwitch is the switch to migrate to. |
+ ID of the size reservation to delete. |
@@ -18733,8 +18665,8 @@ SwitchServiceMigrateReq
- SwitchServiceMigrateResponse
-
SwitchServiceMigrateResponse is the response payload for migrating a switch.
+ SizeReservationServiceDeleteResponse
+ SizeReservationServiceDeleteResponse is the response payload for deleting a size reservation.
@@ -18744,10 +18676,10 @@ SwitchServiceMigrateRe
- | switch |
- metalstack.api.v2.Switch |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- Switch contains the switch that was migrated to. |
+ SizeReservation contains the deleted reservation. |
@@ -18757,8 +18689,8 @@ SwitchServiceMigrateRe
- SwitchServicePortRequest
-
SwitchServicePortRequest is the request payload for setting the port status of a switch port.
+ SizeReservationServiceListRequest
+ SizeReservationServiceListRequest is the request payload for listing size reservations.
@@ -18768,24 +18700,10 @@ SwitchServicePortRequest
- | id |
- string |
- |
- Id of the switch. |
-
-
-
- | nic_name |
- string |
- |
- NicName of the port whose status should be changed. |
-
-
-
- | status |
- metalstack.api.v2.SwitchPortStatus |
+ query |
+ metalstack.api.v2.SizeReservationQuery |
|
- Status that the port should have. |
+ Query for size reservations. |
@@ -18795,8 +18713,8 @@ SwitchServicePortRequest
- SwitchServicePortResponse
-
SwitchServicePortResponse is the response payload for setting the port status of a switch port.
+ SizeReservationServiceListResponse
+ SizeReservationServiceListResponse is the response payload for listing size reservations.
@@ -18806,10 +18724,10 @@ SwitchServicePortResponse
- | switch |
- metalstack.api.v2.Switch |
- |
- Switch after the port status toggle. |
+ size_reservations |
+ metalstack.api.v2.SizeReservation |
+ repeated |
+ SizeReservations contains the list of reservations. |
@@ -18819,8 +18737,8 @@ SwitchServicePortResponse
- SwitchServiceUpdateRequest
-
SwitchServiceUpdateRequest is the request payload for updating a switch.
+ SizeReservationServiceUpdateRequest
+ SizeReservationServiceUpdateRequest is the request payload for updating a size reservation.
@@ -18833,71 +18751,49 @@ SwitchServiceUpdateReque
| id |
string |
|
- ID of the switch. |
-
-
-
- | update_meta |
- metalstack.api.v2.UpdateMeta |
- |
- UpdateMeta contains the timestamp and strategy to be used in this update request. |
-
-
-
- | updated_at |
- google.protobuf.Timestamp |
- |
- UpdatedAt is the date when this entity was updated.
-Must be part of the update request to ensure optimistic locking. |
+ Id of this size reservation. |
- | description |
+ name |
string |
optional |
- Description of the switch. |
-
-
-
- | replace_mode |
- metalstack.api.v2.SwitchReplaceMode |
- optional |
- ReplaceMode is used to mark a switch ready for replacement. |
+ Name of this size reservation. |
- | management_ip |
+ description |
string |
optional |
- ManagementIp is the switch's IP for management access. |
+ Description of this size reservation. |
- | management_user |
- string |
- optional |
- ManagementUser is the user name to use for management access. |
+ update_meta |
+ metalstack.api.v2.UpdateMeta |
+ |
+ UpdateMeta contains the timestamp and strategy to be used in this update request. |
- | console_command |
+ partitions |
string |
- optional |
- ConsoleCommand is the command for accessing the switch's console. |
+ repeated |
+ Partition ids of this size reservation. |
- | nics |
- metalstack.api.v2.SwitchNic |
- repeated |
- Nics are the front panel ports of the switch. |
+ amount |
+ int32 |
+ optional |
+ Amount of reservations of this size reservation. |
- | os |
- metalstack.api.v2.SwitchOS |
+ labels |
+ metalstack.api.v2.UpdateLabels |
optional |
- SwitchOs is the OS running on the switch. |
+ Labels to update of this size reservation. |
@@ -18907,8 +18803,8 @@ SwitchServiceUpdateReque
- SwitchServiceUpdateResponse
-
SwitchServiceUpdateResponse is the response payload for updating a switch.
+ SizeReservationServiceUpdateResponse
+ SizeReservationServiceUpdateResponse is the response payload for updating a size reservation.
@@ -18918,10 +18814,10 @@ SwitchServiceUpdateResp
- | switch |
- metalstack.api.v2.Switch |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- Switch contains the updated switch. |
+ SizeReservation contains the updated reservation. |
@@ -18937,8 +18833,8 @@ SwitchServiceUpdateResp
- SwitchService
-
SwitchService provides switch management operations.
+ SizeReservationService
+ SizeReservationService provides size reservation management operations.
| Method Name | Request Type | Response Type | Description |
@@ -18946,52 +18842,31 @@ SwitchService
- | Get |
- SwitchServiceGetRequest |
- SwitchServiceGetResponse |
- Returns the switch with the specified ID. |
-
-
-
- | List |
- SwitchServiceListRequest |
- SwitchServiceListResponse |
- Returns the list of switches. |
+ Create |
+ SizeReservationServiceCreateRequest |
+ SizeReservationServiceCreateResponse |
+ Creates a new size reservation. |
| Update |
- SwitchServiceUpdateRequest |
- SwitchServiceUpdateResponse |
- Updates a switch. |
+ SizeReservationServiceUpdateRequest |
+ SizeReservationServiceUpdateResponse |
+ Updates a size reservation. |
| Delete |
- SwitchServiceDeleteRequest |
- SwitchServiceDeleteResponse |
- Deletes a switch. |
-
-
-
- | Migrate |
- SwitchServiceMigrateRequest |
- SwitchServiceMigrateResponse |
- Migrates a switch. |
-
-
-
- | Port |
- SwitchServicePortRequest |
- SwitchServicePortResponse |
- Sets the port status of a switch port. |
+ SizeReservationServiceDeleteRequest |
+ SizeReservationServiceDeleteResponse |
+ Deletes a size reservation. |
- | ConnectedMachines |
- SwitchServiceConnectedMachinesRequest |
- SwitchServiceConnectedMachinesResponse |
- Returns all switches with their machine connections. |
+ List |
+ SizeReservationServiceListRequest |
+ SizeReservationServiceListResponse |
+ Returns the list of size reservations. |
@@ -19001,13 +18876,13 @@ SwitchService
-
metalstack/admin/v2/task.proto
Top
+
metalstack/admin/v2/switch.proto
Top
- TaskInfo
- TaskInfo contains details of an asynchronous task.
+ SwitchServiceConnectedMachinesRequest
+ SwitchServiceConnectedMachinesRequest is the request payload for listing switches with machine connections.
+
+
+
+
+
+ SwitchServiceConnectedMachinesResponse
+ SwitchServiceConnectedMachinesResponse is the response payload for listing switches with machine connections.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | switches_with_machines |
+ metalstack.api.v2.SwitchWithMachines |
+ repeated |
+ SwitchesWithMachines contains all switches with their machine connections. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceDeleteRequest
+ SwitchServiceDeleteRequest is the request payload for deleting a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ |
+ Id of the switch. |
+
+
+
+ | force |
+ bool |
+ |
+ Force will allow switch deletion despite existing machine connections. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceDeleteResponse
+ SwitchServiceDeleteResponse is the response payload for deleting a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | switch |
+ metalstack.api.v2.Switch |
+ |
+ Switch contains the deleted switch. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceGetRequest
+ SwitchServiceGetRequest is the request payload for getting a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ |
+ Id of the switch to get. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceGetResponse
+ SwitchServiceGetResponse is the response payload for getting a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | switch |
+ metalstack.api.v2.Switch |
+ |
+ Switch contains the requested switch. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceListRequest
+ SwitchServiceListRequest is the request payload for listing switches.
+
+
+
+
+
+
+
+
+ SwitchServiceListResponse
+ SwitchServiceListResponse is the response payload for listing switches.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | switches |
+ metalstack.api.v2.Switch |
+ repeated |
+ Switches that match the request query. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceMigrateRequest
+ SwitchServiceMigrateRequest is the request payload for migrating a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | old_switch |
+ string |
+ |
+ OldSwitch is the switch to migrate away from. |
+
+
+
+ | new_switch |
+ string |
+ |
+ NewSwitch is the switch to migrate to. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceMigrateResponse
+ SwitchServiceMigrateResponse is the response payload for migrating a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | switch |
+ metalstack.api.v2.Switch |
+ |
+ Switch contains the switch that was migrated to. |
+
+
+
+
+
+
+
+
+
+ SwitchServicePortRequest
+ SwitchServicePortRequest is the request payload for setting the port status of a switch port.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ |
+ Id of the switch. |
+
+
+
+ | nic_name |
+ string |
+ |
+ NicName of the port whose status should be changed. |
+
+
+
+ | status |
+ metalstack.api.v2.SwitchPortStatus |
+ |
+ Status that the port should have. |
+
+
+
+
+
+
+
+
+
+ SwitchServicePortResponse
+ SwitchServicePortResponse is the response payload for setting the port status of a switch port.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | switch |
+ metalstack.api.v2.Switch |
+ |
+ Switch after the port status toggle. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceUpdateRequest
+ SwitchServiceUpdateRequest is the request payload for updating a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ |
+ ID of the switch. |
+
+
+
+ | update_meta |
+ metalstack.api.v2.UpdateMeta |
+ |
+ UpdateMeta contains the timestamp and strategy to be used in this update request. |
+
+
+
+ | updated_at |
+ google.protobuf.Timestamp |
+ |
+ UpdatedAt is the date when this entity was updated.
+Must be part of the update request to ensure optimistic locking. |
+
+
+
+ | description |
+ string |
+ optional |
+ Description of the switch. |
+
+
+
+ | replace_mode |
+ metalstack.api.v2.SwitchReplaceMode |
+ optional |
+ ReplaceMode is used to mark a switch ready for replacement. |
+
+
+
+ | management_ip |
+ string |
+ optional |
+ ManagementIp is the switch's IP for management access. |
+
+
+
+ | management_user |
+ string |
+ optional |
+ ManagementUser is the user name to use for management access. |
+
+
+
+ | console_command |
+ string |
+ optional |
+ ConsoleCommand is the command for accessing the switch's console. |
+
+
+
+ | nics |
+ metalstack.api.v2.SwitchNic |
+ repeated |
+ Nics are the front panel ports of the switch. |
+
+
+
+ | os |
+ metalstack.api.v2.SwitchOS |
+ optional |
+ SwitchOs is the OS running on the switch. |
+
+
+
+
+
+
+
+
+
+ SwitchServiceUpdateResponse
+ SwitchServiceUpdateResponse is the response payload for updating a switch.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | switch |
+ metalstack.api.v2.Switch |
+ |
+ Switch contains the updated switch. |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwitchService
+ SwitchService provides switch management operations.
+
+
+
+
+
+
+
metalstack/admin/v2/task.proto
Top
+
+
+
+
+ TaskInfo
+ TaskInfo contains details of an asynchronous task.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
string |
|
ID is the identifier of the task. |
@@ -19602,8 +19987,201 @@ TenantInvite
- TenantMember
- TenantMember defines a user that participates in a tenant.
+ TenantQuery
+ TenantQuery is used to search tenants.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | login |
+ string |
+ optional |
+ Id filters tenants by login. |
+
+
+
+ | name |
+ string |
+ optional |
+ Name filters tenants by name. |
+
+
+
+ | labels |
+ Labels |
+ optional |
+ Labels lists only projects containing the given labels. |
+
+
+
+ | paging |
+ Paging |
+ |
+ Paging details for the list request. |
+
+
+
+
+
+
+
+
+
+ TenantServiceCreateRequest
+ TenantServiceCreateRequest is the request payload of the tenant create request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | name |
+ string |
+ |
+ Name of this tenant. |
+
+
+
+ | description |
+ string |
+ optional |
+ Description of this tenant. |
+
+
+
+ | email |
+ string |
+ optional |
+ Email of the tenant, if not set will be inherited from the creator. |
+
+
+
+ | avatar_url |
+ string |
+ optional |
+ AvatarUrl of the tenant. |
+
+
+
+ | labels |
+ Labels |
+ |
+ Labels on the tenant. |
+
+
+
+
+
+
+
+
+
+ TenantServiceCreateResponse
+ TenantServiceCreateResponse is the response payload of the tenant create request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | tenant |
+ Tenant |
+ |
+ Tenant is the tenant. |
+
+
+
+
+
+
+
+
+
+ TenantServiceDeleteRequest
+ TenantServiceDeleteRequest is the request payload of the tenant delete request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | login |
+ string |
+ |
+ Login of the tenant. |
+
+
+
+
+
+
+
+
+
+ TenantServiceDeleteResponse
+ TenantServiceDeleteResponse is the response payload of the tenant delete request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | tenant |
+ Tenant |
+ |
+ Tenant is the tenant. |
+
+
+
+
+
+
+
+
+
+ TenantServiceGetRequest
+ TenantServiceGetRequest is the request payload of the tenant get request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | login |
+ string |
+ |
+ Login of the tenant. |
+
+
+
+
+
+
+
+
+
+ TenantServiceGetResponse
+ TenantServiceGetResponse is the response payload of the tenant get request.
@@ -19613,38 +20191,34 @@ TenantMember
- | id |
- string |
+ tenant |
+ Tenant |
|
- Id is the user id of the member. |
+ Tenant is the tenant. |
-
- | role |
- TenantRole |
- |
- Role is the role of the member. |
-
+
+
+
+
+
+
+
+ TenantServiceInviteAcceptRequest
+ TenantServiceInviteAcceptRequest is the request payload to a accept invite request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
- | projects |
+ secret |
string |
- repeated |
- Projects in which a user is a direct member. |
-
-
-
- | created_at |
- google.protobuf.Timestamp |
- |
- CreatedAt the date when the member was added to the tenant. |
-
-
-
- | meta |
- Meta |
|
- Meta for this tenant member. |
+ Secret is the invitation secret part of the invitation url. |
@@ -19654,8 +20228,8 @@ TenantMember
- TenantQuery
- TenantQuery is used to search tenants.
+ TenantServiceInviteAcceptResponse
+ TenantServiceInviteAcceptResponse is the response payload to a accept invite request.
@@ -19665,31 +20239,17 @@ TenantQuery
- | login |
+ tenant |
string |
- optional |
- Id filters tenants by login. |
+ |
+ Tenant ID of the joined tenant. |
- | name |
+ tenant_name |
string |
- optional |
- Name filters tenants by name. |
-
-
-
- | labels |
- Labels |
- optional |
- Labels lists only projects containing the given labels. |
-
-
-
- | paging |
- Paging |
|
- Paging details for the list request. |
+ TenantName of the joined tenant. |
@@ -19699,8 +20259,8 @@ TenantQuery
- TenantServiceAddMemberRequest
- TenantServiceAddMemberRequest is the request payload for adding a member to a tenant.
+ TenantServiceInviteDeleteRequest
+ TenantServiceInviteDeleteRequest is the request payload to a delete invite.
@@ -19713,21 +20273,14 @@ TenantServiceAddMemberR
| login |
string |
|
- Login of the tenant to which the member will be added. |
+ Login of the tenant. |
- | member |
+ secret |
string |
|
- Login of the member to add. |
-
-
-
- | role |
- TenantRole |
- |
- Role to assign to the new member. |
+ Secret of the invite to delete. |
@@ -19737,8 +20290,15 @@ TenantServiceAddMemberR
- TenantServiceAddMemberResponse
-
TenantServiceAddMemberResponse is the response payload for the add member request.
+ TenantServiceInviteDeleteResponse
+ TenantServiceInviteDeleteResponse is the response payload of a delete invite request.
+
+
+
+
+
+ TenantServiceInviteGetRequest
+ TenantServiceInviteGetRequest is the request payload to get a invite.
@@ -19748,10 +20308,10 @@ TenantServiceAddMember
- | tenant_member |
- TenantMember |
+ secret |
+ string |
|
- TenantMember is the added tenant member. |
+ Secret of the invite to get. |
@@ -19761,8 +20321,8 @@ TenantServiceAddMember
- TenantServiceCreateRequest
-
TenantServiceCreateRequest is the request payload of the tenant create request.
+ TenantServiceInviteGetResponse
+ TenantServiceInviteGetResponse is the response payload to a get invite request.
@@ -19772,38 +20332,41 @@ TenantServiceCreateRequest
- | name |
- string |
+ invite |
+ TenantInvite |
|
- Name of this tenant. |
-
-
-
- | description |
- string |
- optional |
- Description of this tenant. |
+ Invite is the invite. |
-
- | email |
- string |
- optional |
- Email of the tenant, if not set will be inherited from the creator. |
-
+
+
+
+
+
+
+
+ TenantServiceInviteRequest
+ TenantServiceInviteRequest is used to invite a member to a tenant.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
- | avatar_url |
+ login |
string |
- optional |
- AvatarUrl of the tenant. |
+ |
+ Login of the tenant. |
- | labels |
- Labels |
+ role |
+ TenantRole |
|
- Labels on the tenant. |
+ Role of this user in this tenant. |
@@ -19813,8 +20376,8 @@ TenantServiceCreateRequest
- TenantServiceCreateResponse
-
TenantServiceCreateResponse is the response payload of the tenant create request.
+ TenantServiceInviteResponse
+ TenantServiceInviteRequest is the response payload to a invite member request.
@@ -19824,10 +20387,10 @@ TenantServiceCreateRespon
- | tenant |
- Tenant |
+ invite |
+ TenantInvite |
|
- Tenant is the tenant. |
+ Invite contains a secret which can be sent to a potential user. |
@@ -19837,8 +20400,8 @@ TenantServiceCreateRespon
- TenantServiceDeleteRequest
-
TenantServiceDeleteRequest is the request payload of the tenant delete request.
+ TenantServiceInvitesListRequest
+ TenantServiceInvitesListRequest is the request payload to a list invites request.
@@ -19861,8 +20424,8 @@ TenantServiceDeleteRequest
- TenantServiceDeleteResponse
-
TenantServiceDeleteResponse is the response payload of the tenant delete request.
+ TenantServiceInvitesListResponse
+ TenantServiceInvitesListResponse is the response payload to a list invites request.
@@ -19872,10 +20435,10 @@ TenantServiceDeleteRespon
- | tenant |
- Tenant |
- |
- Tenant is the tenant. |
+ invites |
+ TenantInvite |
+ repeated |
+ Invites that have not yet accepted the invitation to this tenant. |
@@ -19885,8 +20448,8 @@ TenantServiceDeleteRespon
- TenantServiceGetRequest
-
TenantServiceGetRequest is the request payload of the tenant get request.
+ TenantServiceListRequest
+ TenantServiceListRequest is the request payload of the tenant list request.
@@ -19896,10 +20459,10 @@ TenantServiceGetRequest
- | login |
- string |
+ query |
+ TenantQuery |
|
- Login of the tenant. |
+ Query for tenants. |
@@ -19909,8 +20472,8 @@ TenantServiceGetRequest
- TenantServiceGetResponse
- TenantServiceGetResponse is the response payload of the tenant get request.
+ TenantServiceListResponse
+ TenantServiceListResponse is the response payload of the tenant list request.
@@ -19920,17 +20483,76 @@ TenantServiceGetResponse
- | tenant |
+ tenants |
Tenant |
+ repeated |
+ Tenants is the list of tenants. |
+
+
+
+
+
+
+
+
+
+ TenantServiceUpdateRequest
+ TenantServiceUpdateRequest is the request payload of the tenant update request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | login |
+ string |
|
- Tenant is the tenant. |
+ Login of the tenant. |
+
+
+
+ | update_meta |
+ UpdateMeta |
+ |
+ UpdateMeta contains the timestamp and strategy to be used in this update request. |
+
+
+
+ | name |
+ string |
+ optional |
+ Name of the tenant. |
+
+
+
+ | email |
+ string |
+ optional |
+ Email of the tenant. |
+
+
+
+ | description |
+ string |
+ optional |
+ Description of this tenant. |
+
+
+
+ | avatar_url |
+ string |
+ optional |
+ AvatarUrl of the tenant. |
- | tenant_members |
- TenantMember |
- repeated |
- TenantMembers of this tenant. |
+ labels |
+ UpdateLabels |
+ optional |
+ Labels on the tenant. |
@@ -19940,8 +20562,8 @@ TenantServiceGetResponse
TenantServiceInviteAcceptRequest
- TenantServiceInviteAcceptRequest is the request payload to a accept invite request.
+ TenantServiceUpdateResponse
+ TenantServiceUpdateResponse is the response payload of the tenant update request.
@@ -19951,10 +20573,10 @@ TenantServiceInviteA
- | secret |
- string |
+ tenant |
+ Tenant |
|
- Secret is the invitation secret part of the invitation url. |
+ Tenant is the tenant. |
@@ -19964,8 +20586,104 @@ TenantServiceInviteA
- TenantServiceInviteAcceptResponse
-
TenantServiceInviteAcceptResponse is the response payload to a accept invite request.
+
+
+
+
+
+
+ TenantService
+ TenantService provides tenant management operations.
+
+
+
+
+
+
+
metalstack/api/v2/tenant_member.proto
Top
+
+
+
+
+ TenantMember
+ TenantMember defines a user that participates in a tenant.
@@ -19975,48 +20693,45 @@ TenantServiceInvite
- | tenant |
+ member |
string |
|
- Tenant ID of the joined tenant. |
+ Member is the user id of the member. |
- | tenant_name |
- string |
+ role |
+ TenantRole |
|
- TenantName of the joined tenant. |
+ Role is the role of the member. |
-
-
-
-
-
-
-
- TenantServiceInviteDeleteRequest
- TenantServiceInviteDeleteRequest is the request payload to a delete invite.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
- | login |
+ projects |
string |
+ repeated |
+ Projects in which a user is a direct member. |
+
+
+
+ | created_at |
+ google.protobuf.Timestamp |
|
- Login of the tenant. |
+ CreatedAt the date when the member was added to the tenant. |
- | secret |
+ meta |
+ Meta |
+ |
+ Meta for this tenant member. |
+
+
+
+ | tenant |
string |
|
- Secret of the invite to delete. |
+ Tenant is the tenant that this member participates in. |
@@ -20026,15 +20741,8 @@ TenantServiceInviteD
- TenantServiceInviteDeleteResponse
-
TenantServiceInviteDeleteResponse is the response payload of a delete invite request.
-
-
-
-
-
- TenantServiceInviteGetRequest
- TenantServiceInviteGetRequest is the request payload to get a invite.
+ TenantMemberQuery
+ TenantMemberQuery is used to search tenant members.
@@ -20044,34 +20752,24 @@ TenantServiceInviteGetR
- | secret |
+ member |
string |
- |
- Secret of the invite to get. |
+ optional |
+ Member is the user id of the member. |
-
-
-
-
-
-
-
- TenantServiceInviteGetResponse
- TenantServiceInviteGetResponse is the response payload to a get invite request.
-
-
-
-
- | Field | Type | Label | Description |
-
-
+
+ | role |
+ TenantRole |
+ optional |
+ Role is the role of the member. |
+
- | invite |
- TenantInvite |
- |
- Invite is the invite. |
+ projects |
+ string |
+ repeated |
+ Projects in which a user is a direct member. |
@@ -20081,8 +20779,8 @@ TenantServiceInviteGet
- TenantServiceInviteRequest
-
TenantServiceInviteRequest is used to invite a member to a tenant.
+ TenantMemberServiceCreateRequest
+ TenantMemberServiceCreateRequest is the request payload for adding a member to a tenant.
@@ -20095,14 +20793,21 @@ TenantServiceInviteRequest
| login |
string |
|
- Login of the tenant. |
+ Login of the tenant to which the member will be added. |
+
+
+
+ | member |
+ string |
+ |
+ Login of the member to add. |
| role |
TenantRole |
|
- Role of this user in this tenant. |
+ Role to assign to the new member. |
@@ -20112,8 +20817,8 @@ TenantServiceInviteRequest
- TenantServiceInviteResponse
-
TenantServiceInviteRequest is the response payload to a invite member request.
+ TenantMemberServiceCreateResponse
+ TenantMemberServiceCreateResponse is the response payload of the tenant member create request.
@@ -20123,10 +20828,10 @@ TenantServiceInviteRespon
- | invite |
- TenantInvite |
+ member |
+ TenantMember |
|
- Invite contains a secret which can be sent to a potential user. |
+ Member is the member of this tenant. |
@@ -20136,8 +20841,8 @@ TenantServiceInviteRespon
- TenantServiceInvitesListRequest
-
TenantServiceInvitesListRequest is the request payload to a list invites request.
+ TenantMemberServiceDeleteRequest
+ TenantMemberServiceDeleteRequest is used to remove a member from a tenant.
@@ -20153,28 +20858,11 @@ TenantServiceInvitesL
Login of the tenant. |
-
-
-
-
-
-
-
- TenantServiceInvitesListResponse
- TenantServiceInvitesListResponse is the response payload to a list invites request.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | invites |
- TenantInvite |
- repeated |
- Invites that have not yet accepted the invitation to this tenant. |
+
+ | member |
+ string |
+ |
+ Member is the id of the member to remove from this tenant. |
@@ -20184,8 +20872,8 @@ TenantServiceInvites
- TenantServiceLeaveRequest
-
TenantServiceLeaveTenantRequest is used to leave a tenant.
+ TenantMemberServiceDeleteResponse
+ TenantMemberServiceDeleteResponse is the response payload of the tenant member delete request.
@@ -20195,10 +20883,10 @@ TenantServiceLeaveRequest
- | login |
- string |
+ member |
+ TenantMember |
|
- Login of the tenant. |
+ Member is the member of this tenant. |
@@ -20208,15 +20896,8 @@ TenantServiceLeaveRequest
- TenantServiceLeaveResponse
-
TenantServiceLeaveTenantResponse is the response payload to a leave tenant request.
-
-
-
-
-
- TenantServiceListRequest
- TenantServiceListRequest is the request payload of the tenant list request.
+ TenantMemberServiceGetRequest
+ TenantMemberServiceGetRequest is the request payload of the tenant member get request.
@@ -20226,10 +20907,17 @@ TenantServiceListRequest
- | query |
- TenantQuery |
+ login |
+ string |
|
- Query for tenants. |
+ Login of the tenant. |
+
+
+
+ | member |
+ string |
+ |
+ Member is the user id of the member. |
@@ -20239,8 +20927,8 @@ TenantServiceListRequest
TenantServiceListResponse
- TenantServiceListResponse is the response payload of the tenant list request.
+ TenantMemberServiceGetResponse
+ TenantMemberServiceGetResponse is the response payload of the tenant member get request.
@@ -20250,10 +20938,10 @@ TenantServiceListResponse
- | tenants |
- Tenant |
- repeated |
- Tenants is the list of tenants. |
+ member |
+ TenantMember |
+ |
+ Member is the member of this tenant. |
@@ -20263,8 +20951,8 @@ TenantServiceListResponse
- TenantServiceRemoveMemberRequest
-
TenantServiceRemoveMemberRequest is used to remove a member from a tenant.
+ TenantMemberServiceLeaveRequest
+ TenantMemberServiceLeaveRequest is used to leave a tenant. This way a member is not required to ask a tenant owner to remove him.
@@ -20277,14 +20965,7 @@ TenantServiceRemoveM
| login |
string |
|
- Login of the tenant. |
-
-
-
- | member |
- string |
- |
- Member is the id of the member to remove from this tenant. |
+ Login of the tenant that the user wants to leave. |
@@ -20294,8 +20975,8 @@ TenantServiceRemoveM
- TenantServiceRemoveMemberResponse
-
TenantServiceRemoveMemberResponse is the response payload to a remove member request.
+ TenantMemberServiceLeaveResponse
+ TenantMemberServiceLeaveResponse is the response payload to a leave tenant request.
@@ -20305,10 +20986,10 @@ TenantServiceRemove
- | tenant_member |
+ member |
TenantMember |
|
- TenantMember is the removed tenant member. |
+ Member is the member of this tenant. |
@@ -20318,8 +20999,8 @@ TenantServiceRemove
- TenantServiceUpdateMemberRequest
-
TenantServiceUpdateMemberRequest is used to update a member from a tenant.
+ TenantMemberServiceListRequest
+ TenantMemberServiceListRequest is the request payload of the tenant member list request.
@@ -20336,17 +21017,10 @@ TenantServiceUpdateM
- | member |
- string |
- |
- Member is the id of the member to update in this tenant. |
-
-
-
- | role |
- TenantRole |
+ query |
+ TenantMemberQuery |
|
- Role of this user in this tenant. |
+ Query for tenant members. |
@@ -20356,8 +21030,8 @@ TenantServiceUpdateM
- TenantServiceUpdateMemberResponse
-
TenantServiceUpdateMemberResponse is the response payload to a update member request.
+ TenantMemberServiceListResponse
+ TenantMemberServiceListResponse is the response payload of the tenant member list request.
@@ -20367,10 +21041,10 @@ TenantServiceUpdate
- | tenant_member |
+ members |
TenantMember |
- |
- TenantMember is the updated membership. |
+ repeated |
+ Members is the list of tenant members. |
@@ -20380,8 +21054,8 @@ TenantServiceUpdate
- TenantServiceUpdateRequest
-
TenantServiceUpdateRequest is the request payload of the tenant update request.
+ TenantMemberServiceUpdateRequest
+ TenantMemberServiceUpdateRequest is used to update a member from a tenant.
@@ -20398,45 +21072,24 @@ TenantServiceUpdateRequest
- | update_meta |
- UpdateMeta |
- |
- UpdateMeta contains the timestamp and strategy to be used in this update request. |
-
-
-
- | name |
- string |
- optional |
- Name of the tenant. |
-
-
-
- | email |
- string |
- optional |
- Email of the tenant. |
-
-
-
- | description |
+ member |
string |
- optional |
- Description of this tenant. |
+ |
+ Member is the id of the member to update in this tenant. |
- | avatar_url |
- string |
+ role |
+ TenantRole |
optional |
- AvatarUrl of the tenant. |
+ Role of this user in this tenant. |
- | labels |
- UpdateLabels |
- optional |
- Labels on the tenant. |
+ update_meta |
+ UpdateMeta |
+ |
+ UpdateMeta contains the timestamp and strategy to be used in this update request. |
@@ -20446,8 +21099,8 @@ TenantServiceUpdateRequest
- TenantServiceUpdateResponse
-
TenantServiceUpdateResponse is the response payload of the tenant update request.
+ TenantMemberServiceUpdateResponse
+ TenantMemberServiceUpdateResponse is the response payload of the tenant member update request.
@@ -20457,10 +21110,10 @@ TenantServiceUpdateRespon
- | tenant |
- Tenant |
+ member |
+ TenantMember |
|
- Tenant is the tenant. |
+ Member is the member of this tenant. |
@@ -20476,8 +21129,8 @@ TenantServiceUpdateRespon
- TenantService
-
TenantService provides tenant management operations.
+ TenantMemberService
+ TenantMemberService provides tenant member management operations.
@@ -20643,10 +21240,10 @@ TenantServiceAddMemb
- | tenant_member |
+ member |
metalstack.api.v2.TenantMember |
|
- TenantMember is the added tenant member. |
+ Member is the added tenant member. |
@@ -20836,10 +21433,10 @@ TenantServiceRemo
- | tenant_member |
+ member |
metalstack.api.v2.TenantMember |
|
- TenantMember is the removed tenant member. |
+ Member is the removed tenant member. |
@@ -22008,96 +22605,6 @@ UserService
-
-
metalstack/cli/v2/project.proto
Top
-
-
-
-
- ProjectMember
- ProjectMember defines a user that participates in a project.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | project |
- string |
- |
- project is the project id to which the member belongs. |
-
-
-
- | project_member |
- metalstack.api.v2.ProjectMember |
- |
- ProjectMember is the project member. |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
metalstack/cli/v2/tenant.proto
Top
-
-
-
-
- TenantMember
- TenantMember defines a user that participates in a tenant.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | tenant |
- string |
- |
- tenant is the login tenant to which the member belongs. |
-
-
-
- | tenant_member |
- metalstack.api.v2.TenantMember |
- |
- TenantMember is the tenant member. |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
metalstack/infra/v2/bmc.proto
Top
diff --git a/go/client/client.go b/go/client/client.go
index 40b546e1..2f8fed2b 100755
--- a/go/client/client.go
+++ b/go/client/client.go
@@ -76,10 +76,12 @@ type (
Network() apiv2connect.NetworkServiceClient
Partition() apiv2connect.PartitionServiceClient
Project() apiv2connect.ProjectServiceClient
+ ProjectMember() apiv2connect.ProjectMemberServiceClient
Size() apiv2connect.SizeServiceClient
SizeImageConstraint() apiv2connect.SizeImageConstraintServiceClient
SizeReservation() apiv2connect.SizeReservationServiceClient
Tenant() apiv2connect.TenantServiceClient
+ TenantMember() apiv2connect.TenantMemberServiceClient
Token() apiv2connect.TokenServiceClient
User() apiv2connect.UserServiceClient
Version() apiv2connect.VersionServiceClient
@@ -96,10 +98,12 @@ type (
networkservice apiv2connect.NetworkServiceClient
partitionservice apiv2connect.PartitionServiceClient
projectservice apiv2connect.ProjectServiceClient
+ projectmemberservice apiv2connect.ProjectMemberServiceClient
sizeservice apiv2connect.SizeServiceClient
sizeimageconstraintservice apiv2connect.SizeImageConstraintServiceClient
sizereservationservice apiv2connect.SizeReservationServiceClient
tenantservice apiv2connect.TenantServiceClient
+ tenantmemberservice apiv2connect.TenantMemberServiceClient
tokenservice apiv2connect.TokenServiceClient
userservice apiv2connect.UserServiceClient
versionservice apiv2connect.VersionServiceClient
@@ -344,6 +348,12 @@ func (c *client) Apiv2() Apiv2 {
connect.WithInterceptors(c.interceptors...),
compress.WithAll(compress.LevelBalanced),
),
+ projectmemberservice: apiv2connect.NewProjectMemberServiceClient(
+ c.config.HttpClient(),
+ c.config.BaseURL,
+ connect.WithInterceptors(c.interceptors...),
+ compress.WithAll(compress.LevelBalanced),
+ ),
sizeservice: apiv2connect.NewSizeServiceClient(
c.config.HttpClient(),
c.config.BaseURL,
@@ -368,6 +378,12 @@ func (c *client) Apiv2() Apiv2 {
connect.WithInterceptors(c.interceptors...),
compress.WithAll(compress.LevelBalanced),
),
+ tenantmemberservice: apiv2connect.NewTenantMemberServiceClient(
+ c.config.HttpClient(),
+ c.config.BaseURL,
+ connect.WithInterceptors(c.interceptors...),
+ compress.WithAll(compress.LevelBalanced),
+ ),
tokenservice: apiv2connect.NewTokenServiceClient(
c.config.HttpClient(),
c.config.BaseURL,
@@ -420,6 +436,9 @@ func (c *apiv2) Partition() apiv2connect.PartitionServiceClient {
func (c *apiv2) Project() apiv2connect.ProjectServiceClient {
return c.projectservice
}
+func (c *apiv2) ProjectMember() apiv2connect.ProjectMemberServiceClient {
+ return c.projectmemberservice
+}
func (c *apiv2) Size() apiv2connect.SizeServiceClient {
return c.sizeservice
}
@@ -432,6 +451,9 @@ func (c *apiv2) SizeReservation() apiv2connect.SizeReservationServiceClient {
func (c *apiv2) Tenant() apiv2connect.TenantServiceClient {
return c.tenantservice
}
+func (c *apiv2) TenantMember() apiv2connect.TenantMemberServiceClient {
+ return c.tenantmemberservice
+}
func (c *apiv2) Token() apiv2connect.TokenServiceClient {
return c.tokenservice
}
diff --git a/go/metalstack/admin/v2/adminv2connect/project.connect.go b/go/metalstack/admin/v2/adminv2connect/project.connect.go
index 80d757fb..c7f706c1 100644
--- a/go/metalstack/admin/v2/adminv2connect/project.connect.go
+++ b/go/metalstack/admin/v2/adminv2connect/project.connect.go
@@ -37,6 +37,12 @@ const (
ProjectServiceCreateProcedure = "/metalstack.admin.v2.ProjectService/Create"
// ProjectServiceListProcedure is the fully-qualified name of the ProjectService's List RPC.
ProjectServiceListProcedure = "/metalstack.admin.v2.ProjectService/List"
+ // ProjectServiceAddMemberProcedure is the fully-qualified name of the ProjectService's AddMember
+ // RPC.
+ ProjectServiceAddMemberProcedure = "/metalstack.admin.v2.ProjectService/AddMember"
+ // ProjectServiceRemoveMemberProcedure is the fully-qualified name of the ProjectService's
+ // RemoveMember RPC.
+ ProjectServiceRemoveMemberProcedure = "/metalstack.admin.v2.ProjectService/RemoveMember"
)
// ProjectServiceClient is a client for the metalstack.admin.v2.ProjectService service.
@@ -45,6 +51,10 @@ type ProjectServiceClient interface {
Create(context.Context, *v2.ProjectServiceCreateRequest) (*v2.ProjectServiceCreateResponse, error)
// Returns the list of projects matching the filter criteria.
List(context.Context, *v2.ProjectServiceListRequest) (*v2.ProjectServiceListResponse, error)
+ // Add a member to a project.
+ AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error)
+ // RemoveMember removes a member from a project.
+ RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error)
}
// NewProjectServiceClient constructs a client for the metalstack.admin.v2.ProjectService service.
@@ -70,13 +80,27 @@ func NewProjectServiceClient(httpClient connect.HTTPClient, baseURL string, opts
connect.WithSchema(projectServiceMethods.ByName("List")),
connect.WithClientOptions(opts...),
),
+ addMember: connect.NewClient[v2.ProjectServiceAddMemberRequest, v2.ProjectServiceAddMemberResponse](
+ httpClient,
+ baseURL+ProjectServiceAddMemberProcedure,
+ connect.WithSchema(projectServiceMethods.ByName("AddMember")),
+ connect.WithClientOptions(opts...),
+ ),
+ removeMember: connect.NewClient[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse](
+ httpClient,
+ baseURL+ProjectServiceRemoveMemberProcedure,
+ connect.WithSchema(projectServiceMethods.ByName("RemoveMember")),
+ connect.WithClientOptions(opts...),
+ ),
}
}
// projectServiceClient implements ProjectServiceClient.
type projectServiceClient struct {
- create *connect.Client[v2.ProjectServiceCreateRequest, v2.ProjectServiceCreateResponse]
- list *connect.Client[v2.ProjectServiceListRequest, v2.ProjectServiceListResponse]
+ create *connect.Client[v2.ProjectServiceCreateRequest, v2.ProjectServiceCreateResponse]
+ list *connect.Client[v2.ProjectServiceListRequest, v2.ProjectServiceListResponse]
+ addMember *connect.Client[v2.ProjectServiceAddMemberRequest, v2.ProjectServiceAddMemberResponse]
+ removeMember *connect.Client[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse]
}
// Create calls metalstack.admin.v2.ProjectService.Create.
@@ -97,12 +121,34 @@ func (c *projectServiceClient) List(ctx context.Context, req *v2.ProjectServiceL
return nil, err
}
+// AddMember calls metalstack.admin.v2.ProjectService.AddMember.
+func (c *projectServiceClient) AddMember(ctx context.Context, req *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) {
+ response, err := c.addMember.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// RemoveMember calls metalstack.admin.v2.ProjectService.RemoveMember.
+func (c *projectServiceClient) RemoveMember(ctx context.Context, req *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) {
+ response, err := c.removeMember.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
// ProjectServiceHandler is an implementation of the metalstack.admin.v2.ProjectService service.
type ProjectServiceHandler interface {
// Creates a new project.
Create(context.Context, *v2.ProjectServiceCreateRequest) (*v2.ProjectServiceCreateResponse, error)
// Returns the list of projects matching the filter criteria.
List(context.Context, *v2.ProjectServiceListRequest) (*v2.ProjectServiceListResponse, error)
+ // Add a member to a project.
+ AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error)
+ // RemoveMember removes a member from a project.
+ RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error)
}
// NewProjectServiceHandler builds an HTTP handler from the service implementation. It returns the
@@ -124,12 +170,28 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler
connect.WithSchema(projectServiceMethods.ByName("List")),
connect.WithHandlerOptions(opts...),
)
+ projectServiceAddMemberHandler := connect.NewUnaryHandlerSimple(
+ ProjectServiceAddMemberProcedure,
+ svc.AddMember,
+ connect.WithSchema(projectServiceMethods.ByName("AddMember")),
+ connect.WithHandlerOptions(opts...),
+ )
+ projectServiceRemoveMemberHandler := connect.NewUnaryHandlerSimple(
+ ProjectServiceRemoveMemberProcedure,
+ svc.RemoveMember,
+ connect.WithSchema(projectServiceMethods.ByName("RemoveMember")),
+ connect.WithHandlerOptions(opts...),
+ )
return "/metalstack.admin.v2.ProjectService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case ProjectServiceCreateProcedure:
projectServiceCreateHandler.ServeHTTP(w, r)
case ProjectServiceListProcedure:
projectServiceListHandler.ServeHTTP(w, r)
+ case ProjectServiceAddMemberProcedure:
+ projectServiceAddMemberHandler.ServeHTTP(w, r)
+ case ProjectServiceRemoveMemberProcedure:
+ projectServiceRemoveMemberHandler.ServeHTTP(w, r)
default:
http.NotFound(w, r)
}
@@ -146,3 +208,11 @@ func (UnimplementedProjectServiceHandler) Create(context.Context, *v2.ProjectSer
func (UnimplementedProjectServiceHandler) List(context.Context, *v2.ProjectServiceListRequest) (*v2.ProjectServiceListResponse, error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.ProjectService.List is not implemented"))
}
+
+func (UnimplementedProjectServiceHandler) AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.ProjectService.AddMember is not implemented"))
+}
+
+func (UnimplementedProjectServiceHandler) RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.ProjectService.RemoveMember is not implemented"))
+}
diff --git a/go/metalstack/admin/v2/project.pb.go b/go/metalstack/admin/v2/project.pb.go
index 45476985..1d513076 100644
--- a/go/metalstack/admin/v2/project.pb.go
+++ b/go/metalstack/admin/v2/project.pb.go
@@ -252,11 +252,222 @@ func (x *ProjectServiceCreateResponse) GetProject() *v2.Project {
return nil
}
+// ProjectServiceAddMemberRequest is the request payload for adding a member to a tenant.
+type ProjectServiceAddMemberRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project is the uuid of the project.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // Login of the member to add.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ // Role to assign to the new member.
+ Role v2.ProjectRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectServiceAddMemberRequest) Reset() {
+ *x = ProjectServiceAddMemberRequest{}
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectServiceAddMemberRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectServiceAddMemberRequest) ProtoMessage() {}
+
+func (x *ProjectServiceAddMemberRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectServiceAddMemberRequest.ProtoReflect.Descriptor instead.
+func (*ProjectServiceAddMemberRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_project_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ProjectServiceAddMemberRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectServiceAddMemberRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+func (x *ProjectServiceAddMemberRequest) GetRole() v2.ProjectRole {
+ if x != nil {
+ return x.Role
+ }
+ return v2.ProjectRole(0)
+}
+
+// ProjectServiceAddMemberResponse is the response payload for the add member request.
+type ProjectServiceAddMemberResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the added project member.
+ Member *v2.ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectServiceAddMemberResponse) Reset() {
+ *x = ProjectServiceAddMemberResponse{}
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectServiceAddMemberResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectServiceAddMemberResponse) ProtoMessage() {}
+
+func (x *ProjectServiceAddMemberResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectServiceAddMemberResponse.ProtoReflect.Descriptor instead.
+func (*ProjectServiceAddMemberResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_project_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *ProjectServiceAddMemberResponse) GetMember() *v2.ProjectMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// ProjectServiceRemoveMemberRequest is the request payload for removing a member from a project.
+type ProjectServiceRemoveMemberRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project is the uuid of the project.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // Login of the member to remove.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectServiceRemoveMemberRequest) Reset() {
+ *x = ProjectServiceRemoveMemberRequest{}
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectServiceRemoveMemberRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectServiceRemoveMemberRequest) ProtoMessage() {}
+
+func (x *ProjectServiceRemoveMemberRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectServiceRemoveMemberRequest.ProtoReflect.Descriptor instead.
+func (*ProjectServiceRemoveMemberRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_project_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *ProjectServiceRemoveMemberRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectServiceRemoveMemberRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+// ProjectServiceRemoveMemberResponse is the response payload for the remove member request.
+type ProjectServiceRemoveMemberResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the removed project member.
+ Member *v2.ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectServiceRemoveMemberResponse) Reset() {
+ *x = ProjectServiceRemoveMemberResponse{}
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectServiceRemoveMemberResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectServiceRemoveMemberResponse) ProtoMessage() {}
+
+func (x *ProjectServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_project_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectServiceRemoveMemberResponse.ProtoReflect.Descriptor instead.
+func (*ProjectServiceRemoveMemberResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_project_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *ProjectServiceRemoveMemberResponse) GetMember() *v2.ProjectMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
var File_metalstack_admin_v2_project_proto protoreflect.FileDescriptor
const file_metalstack_admin_v2_project_proto_rawDesc = "" +
"\n" +
- "!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1fmetalstack/api/v2/project.proto\"a\n" +
+ "!metalstack/admin/v2/project.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1fmetalstack/api/v2/project.proto\x1a&metalstack/api/v2/project_member.proto\"a\n" +
"\x19ProjectServiceListRequest\x12:\n" +
"\x05query\x18\x01 \x01(\v2\x1f.metalstack.api.v2.ProjectQueryH\x00R\x05query\x88\x01\x01B\b\n" +
"\x06_query\"T\n" +
@@ -274,11 +485,24 @@ const file_metalstack_admin_v2_project_proto_rawDesc = "" +
"\n" +
"\b_project\"T\n" +
"\x1cProjectServiceCreateResponse\x124\n" +
- "\aproject\x18\x01 \x01(\v2\x1a.metalstack.api.v2.ProjectR\aproject2\xff\x01\n" +
+ "\aproject\x18\x01 \x01(\v2\x1a.metalstack.api.v2.ProjectR\aproject\"\xa7\x01\n" +
+ "\x1eProjectServiceAddMemberRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12#\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n" +
+ "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"[\n" +
+ "\x1fProjectServiceAddMemberResponse\x128\n" +
+ "\x06member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\x06member\"l\n" +
+ "!ProjectServiceRemoveMemberRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12#\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"^\n" +
+ "\"ProjectServiceRemoveMemberResponse\x128\n" +
+ "\x06member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\x06member2\x90\x04\n" +
"\x0eProjectService\x12x\n" +
"\x06Create\x120.metalstack.admin.v2.ProjectServiceCreateRequest\x1a1.metalstack.admin.v2.ProjectServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12s\n" +
"\x04List\x12..metalstack.admin.v2.ProjectServiceListRequest\x1a/.metalstack.admin.v2.ProjectServiceListResponse\"\n" +
- "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02B\xd0\x01\n" +
+ "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x81\x01\n" +
+ "\tAddMember\x123.metalstack.admin.v2.ProjectServiceAddMemberRequest\x1a4.metalstack.admin.v2.ProjectServiceAddMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x8a\x01\n" +
+ "\fRemoveMember\x126.metalstack.admin.v2.ProjectServiceRemoveMemberRequest\x1a7.metalstack.admin.v2.ProjectServiceRemoveMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01B\xd0\x01\n" +
"\x17com.metalstack.admin.v2B\fProjectProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3"
var (
@@ -293,30 +517,43 @@ func file_metalstack_admin_v2_project_proto_rawDescGZIP() []byte {
return file_metalstack_admin_v2_project_proto_rawDescData
}
-var file_metalstack_admin_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_metalstack_admin_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_metalstack_admin_v2_project_proto_goTypes = []any{
- (*ProjectServiceListRequest)(nil), // 0: metalstack.admin.v2.ProjectServiceListRequest
- (*ProjectServiceListResponse)(nil), // 1: metalstack.admin.v2.ProjectServiceListResponse
- (*ProjectServiceCreateRequest)(nil), // 2: metalstack.admin.v2.ProjectServiceCreateRequest
- (*ProjectServiceCreateResponse)(nil), // 3: metalstack.admin.v2.ProjectServiceCreateResponse
- (*v2.ProjectQuery)(nil), // 4: metalstack.api.v2.ProjectQuery
- (*v2.Project)(nil), // 5: metalstack.api.v2.Project
- (*v2.Labels)(nil), // 6: metalstack.api.v2.Labels
+ (*ProjectServiceListRequest)(nil), // 0: metalstack.admin.v2.ProjectServiceListRequest
+ (*ProjectServiceListResponse)(nil), // 1: metalstack.admin.v2.ProjectServiceListResponse
+ (*ProjectServiceCreateRequest)(nil), // 2: metalstack.admin.v2.ProjectServiceCreateRequest
+ (*ProjectServiceCreateResponse)(nil), // 3: metalstack.admin.v2.ProjectServiceCreateResponse
+ (*ProjectServiceAddMemberRequest)(nil), // 4: metalstack.admin.v2.ProjectServiceAddMemberRequest
+ (*ProjectServiceAddMemberResponse)(nil), // 5: metalstack.admin.v2.ProjectServiceAddMemberResponse
+ (*ProjectServiceRemoveMemberRequest)(nil), // 6: metalstack.admin.v2.ProjectServiceRemoveMemberRequest
+ (*ProjectServiceRemoveMemberResponse)(nil), // 7: metalstack.admin.v2.ProjectServiceRemoveMemberResponse
+ (*v2.ProjectQuery)(nil), // 8: metalstack.api.v2.ProjectQuery
+ (*v2.Project)(nil), // 9: metalstack.api.v2.Project
+ (*v2.Labels)(nil), // 10: metalstack.api.v2.Labels
+ (v2.ProjectRole)(0), // 11: metalstack.api.v2.ProjectRole
+ (*v2.ProjectMember)(nil), // 12: metalstack.api.v2.ProjectMember
}
var file_metalstack_admin_v2_project_proto_depIdxs = []int32{
- 4, // 0: metalstack.admin.v2.ProjectServiceListRequest.query:type_name -> metalstack.api.v2.ProjectQuery
- 5, // 1: metalstack.admin.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
- 6, // 2: metalstack.admin.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 5, // 3: metalstack.admin.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
- 2, // 4: metalstack.admin.v2.ProjectService.Create:input_type -> metalstack.admin.v2.ProjectServiceCreateRequest
- 0, // 5: metalstack.admin.v2.ProjectService.List:input_type -> metalstack.admin.v2.ProjectServiceListRequest
- 3, // 6: metalstack.admin.v2.ProjectService.Create:output_type -> metalstack.admin.v2.ProjectServiceCreateResponse
- 1, // 7: metalstack.admin.v2.ProjectService.List:output_type -> metalstack.admin.v2.ProjectServiceListResponse
- 6, // [6:8] is the sub-list for method output_type
- 4, // [4:6] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
+ 8, // 0: metalstack.admin.v2.ProjectServiceListRequest.query:type_name -> metalstack.api.v2.ProjectQuery
+ 9, // 1: metalstack.admin.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
+ 10, // 2: metalstack.admin.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 9, // 3: metalstack.admin.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
+ 11, // 4: metalstack.admin.v2.ProjectServiceAddMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
+ 12, // 5: metalstack.admin.v2.ProjectServiceAddMemberResponse.member:type_name -> metalstack.api.v2.ProjectMember
+ 12, // 6: metalstack.admin.v2.ProjectServiceRemoveMemberResponse.member:type_name -> metalstack.api.v2.ProjectMember
+ 2, // 7: metalstack.admin.v2.ProjectService.Create:input_type -> metalstack.admin.v2.ProjectServiceCreateRequest
+ 0, // 8: metalstack.admin.v2.ProjectService.List:input_type -> metalstack.admin.v2.ProjectServiceListRequest
+ 4, // 9: metalstack.admin.v2.ProjectService.AddMember:input_type -> metalstack.admin.v2.ProjectServiceAddMemberRequest
+ 6, // 10: metalstack.admin.v2.ProjectService.RemoveMember:input_type -> metalstack.admin.v2.ProjectServiceRemoveMemberRequest
+ 3, // 11: metalstack.admin.v2.ProjectService.Create:output_type -> metalstack.admin.v2.ProjectServiceCreateResponse
+ 1, // 12: metalstack.admin.v2.ProjectService.List:output_type -> metalstack.admin.v2.ProjectServiceListResponse
+ 5, // 13: metalstack.admin.v2.ProjectService.AddMember:output_type -> metalstack.admin.v2.ProjectServiceAddMemberResponse
+ 7, // 14: metalstack.admin.v2.ProjectService.RemoveMember:output_type -> metalstack.admin.v2.ProjectServiceRemoveMemberResponse
+ 11, // [11:15] is the sub-list for method output_type
+ 7, // [7:11] is the sub-list for method input_type
+ 7, // [7:7] is the sub-list for extension type_name
+ 7, // [7:7] is the sub-list for extension extendee
+ 0, // [0:7] is the sub-list for field type_name
}
func init() { file_metalstack_admin_v2_project_proto_init() }
@@ -332,7 +569,7 @@ func file_metalstack_admin_v2_project_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_admin_v2_project_proto_rawDesc), len(file_metalstack_admin_v2_project_proto_rawDesc)),
NumEnums: 0,
- NumMessages: 4,
+ NumMessages: 8,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/metalstack/admin/v2/tenant.pb.go b/go/metalstack/admin/v2/tenant.pb.go
index 65844161..2983636e 100644
--- a/go/metalstack/admin/v2/tenant.pb.go
+++ b/go/metalstack/admin/v2/tenant.pb.go
@@ -328,8 +328,8 @@ func (x *TenantServiceAddMemberRequest) GetRole() v2.TenantRole {
// TenantServiceAddMemberResponse is the response payload for the add member request.
type TenantServiceAddMemberResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // TenantMember is the added tenant member.
- TenantMember *v2.TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"`
+ // Member is the added tenant member.
+ Member *v2.TenantMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -364,9 +364,9 @@ func (*TenantServiceAddMemberResponse) Descriptor() ([]byte, []int) {
return file_metalstack_admin_v2_tenant_proto_rawDescGZIP(), []int{5}
}
-func (x *TenantServiceAddMemberResponse) GetTenantMember() *v2.TenantMember {
+func (x *TenantServiceAddMemberResponse) GetMember() *v2.TenantMember {
if x != nil {
- return x.TenantMember
+ return x.Member
}
return nil
}
@@ -429,8 +429,8 @@ func (x *TenantServiceRemoveMemberRequest) GetMember() string {
// TenantServiceRemoveMemberResponse is the response payload for the remove member request.
type TenantServiceRemoveMemberResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // TenantMember is the removed tenant member.
- TenantMember *v2.TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"`
+ // Member is the removed tenant member.
+ Member *v2.TenantMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -465,9 +465,9 @@ func (*TenantServiceRemoveMemberResponse) Descriptor() ([]byte, []int) {
return file_metalstack_admin_v2_tenant_proto_rawDescGZIP(), []int{7}
}
-func (x *TenantServiceRemoveMemberResponse) GetTenantMember() *v2.TenantMember {
+func (x *TenantServiceRemoveMemberResponse) GetMember() *v2.TenantMember {
if x != nil {
- return x.TenantMember
+ return x.Member
}
return nil
}
@@ -476,7 +476,7 @@ var File_metalstack_admin_v2_tenant_proto protoreflect.FileDescriptor
const file_metalstack_admin_v2_tenant_proto_rawDesc = "" +
"\n" +
- " metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xd4\x02\n" +
+ " metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\x1a%metalstack/api/v2/tenant_member.proto\"\xd4\x02\n" +
"\x1aTenantServiceCreateRequest\x12\x1f\n" +
"\x04name\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x122\n" +
"\vdescription\x18\x02 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x00R\vdescription\x88\x01\x01\x12\"\n" +
@@ -501,14 +501,14 @@ const file_metalstack_admin_v2_tenant_proto_rawDesc = "" +
"\x1dTenantServiceAddMemberRequest\x12#\n" +
"\x06tenant\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n" +
"\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" +
- "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n" +
- "\x1eTenantServiceAddMemberResponse\x12D\n" +
- "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember\"l\n" +
+ "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"Y\n" +
+ "\x1eTenantServiceAddMemberResponse\x127\n" +
+ "\x06member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\x06member\"l\n" +
" TenantServiceRemoveMemberRequest\x12#\n" +
"\x06tenant\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n" +
- "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"i\n" +
- "!TenantServiceRemoveMemberResponse\x12D\n" +
- "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember2\x86\x04\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"\\\n" +
+ "!TenantServiceRemoveMemberResponse\x127\n" +
+ "\x06member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\x06member2\x86\x04\n" +
"\rTenantService\x12v\n" +
"\x06Create\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a0.metalstack.admin.v2.TenantServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12q\n" +
"\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\n" +
@@ -551,8 +551,8 @@ var file_metalstack_admin_v2_tenant_proto_depIdxs = []int32{
10, // 2: metalstack.admin.v2.TenantServiceListRequest.query:type_name -> metalstack.api.v2.TenantQuery
9, // 3: metalstack.admin.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant
11, // 4: metalstack.admin.v2.TenantServiceAddMemberRequest.role:type_name -> metalstack.api.v2.TenantRole
- 12, // 5: metalstack.admin.v2.TenantServiceAddMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember
- 12, // 6: metalstack.admin.v2.TenantServiceRemoveMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember
+ 12, // 5: metalstack.admin.v2.TenantServiceAddMemberResponse.member:type_name -> metalstack.api.v2.TenantMember
+ 12, // 6: metalstack.admin.v2.TenantServiceRemoveMemberResponse.member:type_name -> metalstack.api.v2.TenantMember
0, // 7: metalstack.admin.v2.TenantService.Create:input_type -> metalstack.admin.v2.TenantServiceCreateRequest
2, // 8: metalstack.admin.v2.TenantService.List:input_type -> metalstack.admin.v2.TenantServiceListRequest
4, // 9: metalstack.admin.v2.TenantService.AddMember:input_type -> metalstack.admin.v2.TenantServiceAddMemberRequest
diff --git a/go/metalstack/api/v2/apiv2connect/project.connect.go b/go/metalstack/api/v2/apiv2connect/project.connect.go
index 74e16577..343d8296 100644
--- a/go/metalstack/api/v2/apiv2connect/project.connect.go
+++ b/go/metalstack/api/v2/apiv2connect/project.connect.go
@@ -43,17 +43,6 @@ const (
ProjectServiceDeleteProcedure = "/metalstack.api.v2.ProjectService/Delete"
// ProjectServiceUpdateProcedure is the fully-qualified name of the ProjectService's Update RPC.
ProjectServiceUpdateProcedure = "/metalstack.api.v2.ProjectService/Update"
- // ProjectServiceLeaveProcedure is the fully-qualified name of the ProjectService's Leave RPC.
- ProjectServiceLeaveProcedure = "/metalstack.api.v2.ProjectService/Leave"
- // ProjectServiceAddMemberProcedure is the fully-qualified name of the ProjectService's AddMember
- // RPC.
- ProjectServiceAddMemberProcedure = "/metalstack.api.v2.ProjectService/AddMember"
- // ProjectServiceRemoveMemberProcedure is the fully-qualified name of the ProjectService's
- // RemoveMember RPC.
- ProjectServiceRemoveMemberProcedure = "/metalstack.api.v2.ProjectService/RemoveMember"
- // ProjectServiceUpdateMemberProcedure is the fully-qualified name of the ProjectService's
- // UpdateMember RPC.
- ProjectServiceUpdateMemberProcedure = "/metalstack.api.v2.ProjectService/UpdateMember"
// ProjectServiceInviteProcedure is the fully-qualified name of the ProjectService's Invite RPC.
ProjectServiceInviteProcedure = "/metalstack.api.v2.ProjectService/Invite"
// ProjectServiceInviteAcceptProcedure is the fully-qualified name of the ProjectService's
@@ -82,14 +71,6 @@ type ProjectServiceClient interface {
Delete(context.Context, *v2.ProjectServiceDeleteRequest) (*v2.ProjectServiceDeleteResponse, error)
// Update a project.
Update(context.Context, *v2.ProjectServiceUpdateRequest) (*v2.ProjectServiceUpdateResponse, error)
- // Leave project.
- Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error)
- // AddMember adds a user to a project.
- AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error)
- // RemoveMember removes a user from a project.
- RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error)
- // UpdateMember updates a user for a project.
- UpdateMember(context.Context, *v2.ProjectServiceUpdateMemberRequest) (*v2.ProjectServiceUpdateMemberResponse, error)
// Invite a user to a project.
Invite(context.Context, *v2.ProjectServiceInviteRequest) (*v2.ProjectServiceInviteResponse, error)
// InviteAccept is called by a user to accept an invitation.
@@ -143,30 +124,6 @@ func NewProjectServiceClient(httpClient connect.HTTPClient, baseURL string, opts
connect.WithSchema(projectServiceMethods.ByName("Update")),
connect.WithClientOptions(opts...),
),
- leave: connect.NewClient[v2.ProjectServiceLeaveRequest, v2.ProjectServiceLeaveResponse](
- httpClient,
- baseURL+ProjectServiceLeaveProcedure,
- connect.WithSchema(projectServiceMethods.ByName("Leave")),
- connect.WithClientOptions(opts...),
- ),
- addMember: connect.NewClient[v2.ProjectServiceAddMemberRequest, v2.ProjectServiceAddMemberResponse](
- httpClient,
- baseURL+ProjectServiceAddMemberProcedure,
- connect.WithSchema(projectServiceMethods.ByName("AddMember")),
- connect.WithClientOptions(opts...),
- ),
- removeMember: connect.NewClient[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse](
- httpClient,
- baseURL+ProjectServiceRemoveMemberProcedure,
- connect.WithSchema(projectServiceMethods.ByName("RemoveMember")),
- connect.WithClientOptions(opts...),
- ),
- updateMember: connect.NewClient[v2.ProjectServiceUpdateMemberRequest, v2.ProjectServiceUpdateMemberResponse](
- httpClient,
- baseURL+ProjectServiceUpdateMemberProcedure,
- connect.WithSchema(projectServiceMethods.ByName("UpdateMember")),
- connect.WithClientOptions(opts...),
- ),
invite: connect.NewClient[v2.ProjectServiceInviteRequest, v2.ProjectServiceInviteResponse](
httpClient,
baseURL+ProjectServiceInviteProcedure,
@@ -207,10 +164,6 @@ type projectServiceClient struct {
create *connect.Client[v2.ProjectServiceCreateRequest, v2.ProjectServiceCreateResponse]
delete *connect.Client[v2.ProjectServiceDeleteRequest, v2.ProjectServiceDeleteResponse]
update *connect.Client[v2.ProjectServiceUpdateRequest, v2.ProjectServiceUpdateResponse]
- leave *connect.Client[v2.ProjectServiceLeaveRequest, v2.ProjectServiceLeaveResponse]
- addMember *connect.Client[v2.ProjectServiceAddMemberRequest, v2.ProjectServiceAddMemberResponse]
- removeMember *connect.Client[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse]
- updateMember *connect.Client[v2.ProjectServiceUpdateMemberRequest, v2.ProjectServiceUpdateMemberResponse]
invite *connect.Client[v2.ProjectServiceInviteRequest, v2.ProjectServiceInviteResponse]
inviteAccept *connect.Client[v2.ProjectServiceInviteAcceptRequest, v2.ProjectServiceInviteAcceptResponse]
inviteDelete *connect.Client[v2.ProjectServiceInviteDeleteRequest, v2.ProjectServiceInviteDeleteResponse]
@@ -263,42 +216,6 @@ func (c *projectServiceClient) Update(ctx context.Context, req *v2.ProjectServic
return nil, err
}
-// Leave calls metalstack.api.v2.ProjectService.Leave.
-func (c *projectServiceClient) Leave(ctx context.Context, req *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) {
- response, err := c.leave.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// AddMember calls metalstack.api.v2.ProjectService.AddMember.
-func (c *projectServiceClient) AddMember(ctx context.Context, req *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) {
- response, err := c.addMember.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// RemoveMember calls metalstack.api.v2.ProjectService.RemoveMember.
-func (c *projectServiceClient) RemoveMember(ctx context.Context, req *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) {
- response, err := c.removeMember.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// UpdateMember calls metalstack.api.v2.ProjectService.UpdateMember.
-func (c *projectServiceClient) UpdateMember(ctx context.Context, req *v2.ProjectServiceUpdateMemberRequest) (*v2.ProjectServiceUpdateMemberResponse, error) {
- response, err := c.updateMember.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
// Invite calls metalstack.api.v2.ProjectService.Invite.
func (c *projectServiceClient) Invite(ctx context.Context, req *v2.ProjectServiceInviteRequest) (*v2.ProjectServiceInviteResponse, error) {
response, err := c.invite.CallUnary(ctx, connect.NewRequest(req))
@@ -356,14 +273,6 @@ type ProjectServiceHandler interface {
Delete(context.Context, *v2.ProjectServiceDeleteRequest) (*v2.ProjectServiceDeleteResponse, error)
// Update a project.
Update(context.Context, *v2.ProjectServiceUpdateRequest) (*v2.ProjectServiceUpdateResponse, error)
- // Leave project.
- Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error)
- // AddMember adds a user to a project.
- AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error)
- // RemoveMember removes a user from a project.
- RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error)
- // UpdateMember updates a user for a project.
- UpdateMember(context.Context, *v2.ProjectServiceUpdateMemberRequest) (*v2.ProjectServiceUpdateMemberResponse, error)
// Invite a user to a project.
Invite(context.Context, *v2.ProjectServiceInviteRequest) (*v2.ProjectServiceInviteResponse, error)
// InviteAccept is called by a user to accept an invitation.
@@ -413,30 +322,6 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler
connect.WithSchema(projectServiceMethods.ByName("Update")),
connect.WithHandlerOptions(opts...),
)
- projectServiceLeaveHandler := connect.NewUnaryHandlerSimple(
- ProjectServiceLeaveProcedure,
- svc.Leave,
- connect.WithSchema(projectServiceMethods.ByName("Leave")),
- connect.WithHandlerOptions(opts...),
- )
- projectServiceAddMemberHandler := connect.NewUnaryHandlerSimple(
- ProjectServiceAddMemberProcedure,
- svc.AddMember,
- connect.WithSchema(projectServiceMethods.ByName("AddMember")),
- connect.WithHandlerOptions(opts...),
- )
- projectServiceRemoveMemberHandler := connect.NewUnaryHandlerSimple(
- ProjectServiceRemoveMemberProcedure,
- svc.RemoveMember,
- connect.WithSchema(projectServiceMethods.ByName("RemoveMember")),
- connect.WithHandlerOptions(opts...),
- )
- projectServiceUpdateMemberHandler := connect.NewUnaryHandlerSimple(
- ProjectServiceUpdateMemberProcedure,
- svc.UpdateMember,
- connect.WithSchema(projectServiceMethods.ByName("UpdateMember")),
- connect.WithHandlerOptions(opts...),
- )
projectServiceInviteHandler := connect.NewUnaryHandlerSimple(
ProjectServiceInviteProcedure,
svc.Invite,
@@ -479,14 +364,6 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler
projectServiceDeleteHandler.ServeHTTP(w, r)
case ProjectServiceUpdateProcedure:
projectServiceUpdateHandler.ServeHTTP(w, r)
- case ProjectServiceLeaveProcedure:
- projectServiceLeaveHandler.ServeHTTP(w, r)
- case ProjectServiceAddMemberProcedure:
- projectServiceAddMemberHandler.ServeHTTP(w, r)
- case ProjectServiceRemoveMemberProcedure:
- projectServiceRemoveMemberHandler.ServeHTTP(w, r)
- case ProjectServiceUpdateMemberProcedure:
- projectServiceUpdateMemberHandler.ServeHTTP(w, r)
case ProjectServiceInviteProcedure:
projectServiceInviteHandler.ServeHTTP(w, r)
case ProjectServiceInviteAcceptProcedure:
@@ -526,22 +403,6 @@ func (UnimplementedProjectServiceHandler) Update(context.Context, *v2.ProjectSer
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.Update is not implemented"))
}
-func (UnimplementedProjectServiceHandler) Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.Leave is not implemented"))
-}
-
-func (UnimplementedProjectServiceHandler) AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.AddMember is not implemented"))
-}
-
-func (UnimplementedProjectServiceHandler) RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.RemoveMember is not implemented"))
-}
-
-func (UnimplementedProjectServiceHandler) UpdateMember(context.Context, *v2.ProjectServiceUpdateMemberRequest) (*v2.ProjectServiceUpdateMemberResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.UpdateMember is not implemented"))
-}
-
func (UnimplementedProjectServiceHandler) Invite(context.Context, *v2.ProjectServiceInviteRequest) (*v2.ProjectServiceInviteResponse, error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.Invite is not implemented"))
}
diff --git a/go/metalstack/api/v2/apiv2connect/project_member.connect.go b/go/metalstack/api/v2/apiv2connect/project_member.connect.go
new file mode 100644
index 00000000..df8e3175
--- /dev/null
+++ b/go/metalstack/api/v2/apiv2connect/project_member.connect.go
@@ -0,0 +1,291 @@
+// Code generated by protoc-gen-connect-go. DO NOT EDIT.
+//
+// Source: metalstack/api/v2/project_member.proto
+
+package apiv2connect
+
+import (
+ connect "connectrpc.com/connect"
+ context "context"
+ errors "errors"
+ v2 "github.com/metal-stack/api/go/metalstack/api/v2"
+ http "net/http"
+ strings "strings"
+)
+
+// This is a compile-time assertion to ensure that this generated file and the connect package are
+// compatible. If you get a compiler error that this constant is not defined, this code was
+// generated with a version of connect newer than the one compiled into your binary. You can fix the
+// problem by either regenerating this code with an older version of connect or updating the connect
+// version compiled into your binary.
+const _ = connect.IsAtLeastVersion1_13_0
+
+const (
+ // ProjectMemberServiceName is the fully-qualified name of the ProjectMemberService service.
+ ProjectMemberServiceName = "metalstack.api.v2.ProjectMemberService"
+)
+
+// These constants are the fully-qualified names of the RPCs defined in this package. They're
+// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route.
+//
+// Note that these are different from the fully-qualified method names used by
+// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
+// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
+// period.
+const (
+ // ProjectMemberServiceListProcedure is the fully-qualified name of the ProjectMemberService's List
+ // RPC.
+ ProjectMemberServiceListProcedure = "/metalstack.api.v2.ProjectMemberService/List"
+ // ProjectMemberServiceGetProcedure is the fully-qualified name of the ProjectMemberService's Get
+ // RPC.
+ ProjectMemberServiceGetProcedure = "/metalstack.api.v2.ProjectMemberService/Get"
+ // ProjectMemberServiceCreateProcedure is the fully-qualified name of the ProjectMemberService's
+ // Create RPC.
+ ProjectMemberServiceCreateProcedure = "/metalstack.api.v2.ProjectMemberService/Create"
+ // ProjectMemberServiceDeleteProcedure is the fully-qualified name of the ProjectMemberService's
+ // Delete RPC.
+ ProjectMemberServiceDeleteProcedure = "/metalstack.api.v2.ProjectMemberService/Delete"
+ // ProjectMemberServiceUpdateProcedure is the fully-qualified name of the ProjectMemberService's
+ // Update RPC.
+ ProjectMemberServiceUpdateProcedure = "/metalstack.api.v2.ProjectMemberService/Update"
+ // ProjectMemberServiceLeaveProcedure is the fully-qualified name of the ProjectMemberService's
+ // Leave RPC.
+ ProjectMemberServiceLeaveProcedure = "/metalstack.api.v2.ProjectMemberService/Leave"
+)
+
+// ProjectMemberServiceClient is a client for the metalstack.api.v2.ProjectMemberService service.
+type ProjectMemberServiceClient interface {
+ // Returns the list of project members.
+ List(context.Context, *v2.ProjectMemberServiceListRequest) (*v2.ProjectMemberServiceListResponse, error)
+ // Returns the project member of the project.
+ Get(context.Context, *v2.ProjectMemberServiceGetRequest) (*v2.ProjectMemberServiceGetResponse, error)
+ // Create a project member.
+ Create(context.Context, *v2.ProjectMemberServiceCreateRequest) (*v2.ProjectMemberServiceCreateResponse, error)
+ // Delete a project member.
+ Delete(context.Context, *v2.ProjectMemberServiceDeleteRequest) (*v2.ProjectMemberServiceDeleteResponse, error)
+ // Update a project member.
+ Update(context.Context, *v2.ProjectMemberServiceUpdateRequest) (*v2.ProjectMemberServiceUpdateResponse, error)
+ // Leave a project.
+ Leave(context.Context, *v2.ProjectMemberServiceLeaveRequest) (*v2.ProjectMemberServiceLeaveResponse, error)
+}
+
+// NewProjectMemberServiceClient constructs a client for the metalstack.api.v2.ProjectMemberService
+// service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for
+// gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply
+// the connect.WithGRPC() or connect.WithGRPCWeb() options.
+//
+// The URL supplied here should be the base URL for the Connect or gRPC server (for example,
+// http://api.acme.com or https://acme.com/grpc).
+func NewProjectMemberServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ProjectMemberServiceClient {
+ baseURL = strings.TrimRight(baseURL, "/")
+ projectMemberServiceMethods := v2.File_metalstack_api_v2_project_member_proto.Services().ByName("ProjectMemberService").Methods()
+ return &projectMemberServiceClient{
+ list: connect.NewClient[v2.ProjectMemberServiceListRequest, v2.ProjectMemberServiceListResponse](
+ httpClient,
+ baseURL+ProjectMemberServiceListProcedure,
+ connect.WithSchema(projectMemberServiceMethods.ByName("List")),
+ connect.WithClientOptions(opts...),
+ ),
+ get: connect.NewClient[v2.ProjectMemberServiceGetRequest, v2.ProjectMemberServiceGetResponse](
+ httpClient,
+ baseURL+ProjectMemberServiceGetProcedure,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Get")),
+ connect.WithClientOptions(opts...),
+ ),
+ create: connect.NewClient[v2.ProjectMemberServiceCreateRequest, v2.ProjectMemberServiceCreateResponse](
+ httpClient,
+ baseURL+ProjectMemberServiceCreateProcedure,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Create")),
+ connect.WithClientOptions(opts...),
+ ),
+ delete: connect.NewClient[v2.ProjectMemberServiceDeleteRequest, v2.ProjectMemberServiceDeleteResponse](
+ httpClient,
+ baseURL+ProjectMemberServiceDeleteProcedure,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Delete")),
+ connect.WithClientOptions(opts...),
+ ),
+ update: connect.NewClient[v2.ProjectMemberServiceUpdateRequest, v2.ProjectMemberServiceUpdateResponse](
+ httpClient,
+ baseURL+ProjectMemberServiceUpdateProcedure,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Update")),
+ connect.WithClientOptions(opts...),
+ ),
+ leave: connect.NewClient[v2.ProjectMemberServiceLeaveRequest, v2.ProjectMemberServiceLeaveResponse](
+ httpClient,
+ baseURL+ProjectMemberServiceLeaveProcedure,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Leave")),
+ connect.WithClientOptions(opts...),
+ ),
+ }
+}
+
+// projectMemberServiceClient implements ProjectMemberServiceClient.
+type projectMemberServiceClient struct {
+ list *connect.Client[v2.ProjectMemberServiceListRequest, v2.ProjectMemberServiceListResponse]
+ get *connect.Client[v2.ProjectMemberServiceGetRequest, v2.ProjectMemberServiceGetResponse]
+ create *connect.Client[v2.ProjectMemberServiceCreateRequest, v2.ProjectMemberServiceCreateResponse]
+ delete *connect.Client[v2.ProjectMemberServiceDeleteRequest, v2.ProjectMemberServiceDeleteResponse]
+ update *connect.Client[v2.ProjectMemberServiceUpdateRequest, v2.ProjectMemberServiceUpdateResponse]
+ leave *connect.Client[v2.ProjectMemberServiceLeaveRequest, v2.ProjectMemberServiceLeaveResponse]
+}
+
+// List calls metalstack.api.v2.ProjectMemberService.List.
+func (c *projectMemberServiceClient) List(ctx context.Context, req *v2.ProjectMemberServiceListRequest) (*v2.ProjectMemberServiceListResponse, error) {
+ response, err := c.list.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Get calls metalstack.api.v2.ProjectMemberService.Get.
+func (c *projectMemberServiceClient) Get(ctx context.Context, req *v2.ProjectMemberServiceGetRequest) (*v2.ProjectMemberServiceGetResponse, error) {
+ response, err := c.get.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Create calls metalstack.api.v2.ProjectMemberService.Create.
+func (c *projectMemberServiceClient) Create(ctx context.Context, req *v2.ProjectMemberServiceCreateRequest) (*v2.ProjectMemberServiceCreateResponse, error) {
+ response, err := c.create.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Delete calls metalstack.api.v2.ProjectMemberService.Delete.
+func (c *projectMemberServiceClient) Delete(ctx context.Context, req *v2.ProjectMemberServiceDeleteRequest) (*v2.ProjectMemberServiceDeleteResponse, error) {
+ response, err := c.delete.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Update calls metalstack.api.v2.ProjectMemberService.Update.
+func (c *projectMemberServiceClient) Update(ctx context.Context, req *v2.ProjectMemberServiceUpdateRequest) (*v2.ProjectMemberServiceUpdateResponse, error) {
+ response, err := c.update.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Leave calls metalstack.api.v2.ProjectMemberService.Leave.
+func (c *projectMemberServiceClient) Leave(ctx context.Context, req *v2.ProjectMemberServiceLeaveRequest) (*v2.ProjectMemberServiceLeaveResponse, error) {
+ response, err := c.leave.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// ProjectMemberServiceHandler is an implementation of the metalstack.api.v2.ProjectMemberService
+// service.
+type ProjectMemberServiceHandler interface {
+ // Returns the list of project members.
+ List(context.Context, *v2.ProjectMemberServiceListRequest) (*v2.ProjectMemberServiceListResponse, error)
+ // Returns the project member of the project.
+ Get(context.Context, *v2.ProjectMemberServiceGetRequest) (*v2.ProjectMemberServiceGetResponse, error)
+ // Create a project member.
+ Create(context.Context, *v2.ProjectMemberServiceCreateRequest) (*v2.ProjectMemberServiceCreateResponse, error)
+ // Delete a project member.
+ Delete(context.Context, *v2.ProjectMemberServiceDeleteRequest) (*v2.ProjectMemberServiceDeleteResponse, error)
+ // Update a project member.
+ Update(context.Context, *v2.ProjectMemberServiceUpdateRequest) (*v2.ProjectMemberServiceUpdateResponse, error)
+ // Leave a project.
+ Leave(context.Context, *v2.ProjectMemberServiceLeaveRequest) (*v2.ProjectMemberServiceLeaveResponse, error)
+}
+
+// NewProjectMemberServiceHandler builds an HTTP handler from the service implementation. It returns
+// the path on which to mount the handler and the handler itself.
+//
+// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf
+// and JSON codecs. They also support gzip compression.
+func NewProjectMemberServiceHandler(svc ProjectMemberServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
+ projectMemberServiceMethods := v2.File_metalstack_api_v2_project_member_proto.Services().ByName("ProjectMemberService").Methods()
+ projectMemberServiceListHandler := connect.NewUnaryHandlerSimple(
+ ProjectMemberServiceListProcedure,
+ svc.List,
+ connect.WithSchema(projectMemberServiceMethods.ByName("List")),
+ connect.WithHandlerOptions(opts...),
+ )
+ projectMemberServiceGetHandler := connect.NewUnaryHandlerSimple(
+ ProjectMemberServiceGetProcedure,
+ svc.Get,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Get")),
+ connect.WithHandlerOptions(opts...),
+ )
+ projectMemberServiceCreateHandler := connect.NewUnaryHandlerSimple(
+ ProjectMemberServiceCreateProcedure,
+ svc.Create,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Create")),
+ connect.WithHandlerOptions(opts...),
+ )
+ projectMemberServiceDeleteHandler := connect.NewUnaryHandlerSimple(
+ ProjectMemberServiceDeleteProcedure,
+ svc.Delete,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Delete")),
+ connect.WithHandlerOptions(opts...),
+ )
+ projectMemberServiceUpdateHandler := connect.NewUnaryHandlerSimple(
+ ProjectMemberServiceUpdateProcedure,
+ svc.Update,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Update")),
+ connect.WithHandlerOptions(opts...),
+ )
+ projectMemberServiceLeaveHandler := connect.NewUnaryHandlerSimple(
+ ProjectMemberServiceLeaveProcedure,
+ svc.Leave,
+ connect.WithSchema(projectMemberServiceMethods.ByName("Leave")),
+ connect.WithHandlerOptions(opts...),
+ )
+ return "/metalstack.api.v2.ProjectMemberService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ switch r.URL.Path {
+ case ProjectMemberServiceListProcedure:
+ projectMemberServiceListHandler.ServeHTTP(w, r)
+ case ProjectMemberServiceGetProcedure:
+ projectMemberServiceGetHandler.ServeHTTP(w, r)
+ case ProjectMemberServiceCreateProcedure:
+ projectMemberServiceCreateHandler.ServeHTTP(w, r)
+ case ProjectMemberServiceDeleteProcedure:
+ projectMemberServiceDeleteHandler.ServeHTTP(w, r)
+ case ProjectMemberServiceUpdateProcedure:
+ projectMemberServiceUpdateHandler.ServeHTTP(w, r)
+ case ProjectMemberServiceLeaveProcedure:
+ projectMemberServiceLeaveHandler.ServeHTTP(w, r)
+ default:
+ http.NotFound(w, r)
+ }
+ })
+}
+
+// UnimplementedProjectMemberServiceHandler returns CodeUnimplemented from all methods.
+type UnimplementedProjectMemberServiceHandler struct{}
+
+func (UnimplementedProjectMemberServiceHandler) List(context.Context, *v2.ProjectMemberServiceListRequest) (*v2.ProjectMemberServiceListResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectMemberService.List is not implemented"))
+}
+
+func (UnimplementedProjectMemberServiceHandler) Get(context.Context, *v2.ProjectMemberServiceGetRequest) (*v2.ProjectMemberServiceGetResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectMemberService.Get is not implemented"))
+}
+
+func (UnimplementedProjectMemberServiceHandler) Create(context.Context, *v2.ProjectMemberServiceCreateRequest) (*v2.ProjectMemberServiceCreateResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectMemberService.Create is not implemented"))
+}
+
+func (UnimplementedProjectMemberServiceHandler) Delete(context.Context, *v2.ProjectMemberServiceDeleteRequest) (*v2.ProjectMemberServiceDeleteResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectMemberService.Delete is not implemented"))
+}
+
+func (UnimplementedProjectMemberServiceHandler) Update(context.Context, *v2.ProjectMemberServiceUpdateRequest) (*v2.ProjectMemberServiceUpdateResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectMemberService.Update is not implemented"))
+}
+
+func (UnimplementedProjectMemberServiceHandler) Leave(context.Context, *v2.ProjectMemberServiceLeaveRequest) (*v2.ProjectMemberServiceLeaveResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectMemberService.Leave is not implemented"))
+}
diff --git a/go/metalstack/api/v2/apiv2connect/tenant.connect.go b/go/metalstack/api/v2/apiv2connect/tenant.connect.go
index 9b99279a..1c209907 100644
--- a/go/metalstack/api/v2/apiv2connect/tenant.connect.go
+++ b/go/metalstack/api/v2/apiv2connect/tenant.connect.go
@@ -43,16 +43,6 @@ const (
TenantServiceUpdateProcedure = "/metalstack.api.v2.TenantService/Update"
// TenantServiceDeleteProcedure is the fully-qualified name of the TenantService's Delete RPC.
TenantServiceDeleteProcedure = "/metalstack.api.v2.TenantService/Delete"
- // TenantServiceLeaveProcedure is the fully-qualified name of the TenantService's Leave RPC.
- TenantServiceLeaveProcedure = "/metalstack.api.v2.TenantService/Leave"
- // TenantServiceAddMemberProcedure is the fully-qualified name of the TenantService's AddMember RPC.
- TenantServiceAddMemberProcedure = "/metalstack.api.v2.TenantService/AddMember"
- // TenantServiceRemoveMemberProcedure is the fully-qualified name of the TenantService's
- // RemoveMember RPC.
- TenantServiceRemoveMemberProcedure = "/metalstack.api.v2.TenantService/RemoveMember"
- // TenantServiceUpdateMemberProcedure is the fully-qualified name of the TenantService's
- // UpdateMember RPC.
- TenantServiceUpdateMemberProcedure = "/metalstack.api.v2.TenantService/UpdateMember"
// TenantServiceInviteProcedure is the fully-qualified name of the TenantService's Invite RPC.
TenantServiceInviteProcedure = "/metalstack.api.v2.TenantService/Invite"
// TenantServiceInviteAcceptProcedure is the fully-qualified name of the TenantService's
@@ -80,14 +70,6 @@ type TenantServiceClient interface {
Update(context.Context, *v2.TenantServiceUpdateRequest) (*v2.TenantServiceUpdateResponse, error)
// Delete a tenant.
Delete(context.Context, *v2.TenantServiceDeleteRequest) (*v2.TenantServiceDeleteResponse, error)
- // Leave removes a member from a tenant.
- Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error)
- // AddMember adds a member to a tenant.
- AddMember(context.Context, *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error)
- // RemoveMember removes a member from a tenant.
- RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error)
- // UpdateMember update a member of a tenant.
- UpdateMember(context.Context, *v2.TenantServiceUpdateMemberRequest) (*v2.TenantServiceUpdateMemberResponse, error)
// Invite a user to a tenant.
Invite(context.Context, *v2.TenantServiceInviteRequest) (*v2.TenantServiceInviteResponse, error)
// InviteAccept is called from a user to accept an invitation.
@@ -141,30 +123,6 @@ func NewTenantServiceClient(httpClient connect.HTTPClient, baseURL string, opts
connect.WithSchema(tenantServiceMethods.ByName("Delete")),
connect.WithClientOptions(opts...),
),
- leave: connect.NewClient[v2.TenantServiceLeaveRequest, v2.TenantServiceLeaveResponse](
- httpClient,
- baseURL+TenantServiceLeaveProcedure,
- connect.WithSchema(tenantServiceMethods.ByName("Leave")),
- connect.WithClientOptions(opts...),
- ),
- addMember: connect.NewClient[v2.TenantServiceAddMemberRequest, v2.TenantServiceAddMemberResponse](
- httpClient,
- baseURL+TenantServiceAddMemberProcedure,
- connect.WithSchema(tenantServiceMethods.ByName("AddMember")),
- connect.WithClientOptions(opts...),
- ),
- removeMember: connect.NewClient[v2.TenantServiceRemoveMemberRequest, v2.TenantServiceRemoveMemberResponse](
- httpClient,
- baseURL+TenantServiceRemoveMemberProcedure,
- connect.WithSchema(tenantServiceMethods.ByName("RemoveMember")),
- connect.WithClientOptions(opts...),
- ),
- updateMember: connect.NewClient[v2.TenantServiceUpdateMemberRequest, v2.TenantServiceUpdateMemberResponse](
- httpClient,
- baseURL+TenantServiceUpdateMemberProcedure,
- connect.WithSchema(tenantServiceMethods.ByName("UpdateMember")),
- connect.WithClientOptions(opts...),
- ),
invite: connect.NewClient[v2.TenantServiceInviteRequest, v2.TenantServiceInviteResponse](
httpClient,
baseURL+TenantServiceInviteProcedure,
@@ -205,10 +163,6 @@ type tenantServiceClient struct {
get *connect.Client[v2.TenantServiceGetRequest, v2.TenantServiceGetResponse]
update *connect.Client[v2.TenantServiceUpdateRequest, v2.TenantServiceUpdateResponse]
delete *connect.Client[v2.TenantServiceDeleteRequest, v2.TenantServiceDeleteResponse]
- leave *connect.Client[v2.TenantServiceLeaveRequest, v2.TenantServiceLeaveResponse]
- addMember *connect.Client[v2.TenantServiceAddMemberRequest, v2.TenantServiceAddMemberResponse]
- removeMember *connect.Client[v2.TenantServiceRemoveMemberRequest, v2.TenantServiceRemoveMemberResponse]
- updateMember *connect.Client[v2.TenantServiceUpdateMemberRequest, v2.TenantServiceUpdateMemberResponse]
invite *connect.Client[v2.TenantServiceInviteRequest, v2.TenantServiceInviteResponse]
inviteAccept *connect.Client[v2.TenantServiceInviteAcceptRequest, v2.TenantServiceInviteAcceptResponse]
inviteDelete *connect.Client[v2.TenantServiceInviteDeleteRequest, v2.TenantServiceInviteDeleteResponse]
@@ -261,42 +215,6 @@ func (c *tenantServiceClient) Delete(ctx context.Context, req *v2.TenantServiceD
return nil, err
}
-// Leave calls metalstack.api.v2.TenantService.Leave.
-func (c *tenantServiceClient) Leave(ctx context.Context, req *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) {
- response, err := c.leave.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// AddMember calls metalstack.api.v2.TenantService.AddMember.
-func (c *tenantServiceClient) AddMember(ctx context.Context, req *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error) {
- response, err := c.addMember.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// RemoveMember calls metalstack.api.v2.TenantService.RemoveMember.
-func (c *tenantServiceClient) RemoveMember(ctx context.Context, req *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) {
- response, err := c.removeMember.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// UpdateMember calls metalstack.api.v2.TenantService.UpdateMember.
-func (c *tenantServiceClient) UpdateMember(ctx context.Context, req *v2.TenantServiceUpdateMemberRequest) (*v2.TenantServiceUpdateMemberResponse, error) {
- response, err := c.updateMember.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
// Invite calls metalstack.api.v2.TenantService.Invite.
func (c *tenantServiceClient) Invite(ctx context.Context, req *v2.TenantServiceInviteRequest) (*v2.TenantServiceInviteResponse, error) {
response, err := c.invite.CallUnary(ctx, connect.NewRequest(req))
@@ -354,14 +272,6 @@ type TenantServiceHandler interface {
Update(context.Context, *v2.TenantServiceUpdateRequest) (*v2.TenantServiceUpdateResponse, error)
// Delete a tenant.
Delete(context.Context, *v2.TenantServiceDeleteRequest) (*v2.TenantServiceDeleteResponse, error)
- // Leave removes a member from a tenant.
- Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error)
- // AddMember adds a member to a tenant.
- AddMember(context.Context, *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error)
- // RemoveMember removes a member from a tenant.
- RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error)
- // UpdateMember update a member of a tenant.
- UpdateMember(context.Context, *v2.TenantServiceUpdateMemberRequest) (*v2.TenantServiceUpdateMemberResponse, error)
// Invite a user to a tenant.
Invite(context.Context, *v2.TenantServiceInviteRequest) (*v2.TenantServiceInviteResponse, error)
// InviteAccept is called from a user to accept an invitation.
@@ -411,30 +321,6 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp
connect.WithSchema(tenantServiceMethods.ByName("Delete")),
connect.WithHandlerOptions(opts...),
)
- tenantServiceLeaveHandler := connect.NewUnaryHandlerSimple(
- TenantServiceLeaveProcedure,
- svc.Leave,
- connect.WithSchema(tenantServiceMethods.ByName("Leave")),
- connect.WithHandlerOptions(opts...),
- )
- tenantServiceAddMemberHandler := connect.NewUnaryHandlerSimple(
- TenantServiceAddMemberProcedure,
- svc.AddMember,
- connect.WithSchema(tenantServiceMethods.ByName("AddMember")),
- connect.WithHandlerOptions(opts...),
- )
- tenantServiceRemoveMemberHandler := connect.NewUnaryHandlerSimple(
- TenantServiceRemoveMemberProcedure,
- svc.RemoveMember,
- connect.WithSchema(tenantServiceMethods.ByName("RemoveMember")),
- connect.WithHandlerOptions(opts...),
- )
- tenantServiceUpdateMemberHandler := connect.NewUnaryHandlerSimple(
- TenantServiceUpdateMemberProcedure,
- svc.UpdateMember,
- connect.WithSchema(tenantServiceMethods.ByName("UpdateMember")),
- connect.WithHandlerOptions(opts...),
- )
tenantServiceInviteHandler := connect.NewUnaryHandlerSimple(
TenantServiceInviteProcedure,
svc.Invite,
@@ -477,14 +363,6 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp
tenantServiceUpdateHandler.ServeHTTP(w, r)
case TenantServiceDeleteProcedure:
tenantServiceDeleteHandler.ServeHTTP(w, r)
- case TenantServiceLeaveProcedure:
- tenantServiceLeaveHandler.ServeHTTP(w, r)
- case TenantServiceAddMemberProcedure:
- tenantServiceAddMemberHandler.ServeHTTP(w, r)
- case TenantServiceRemoveMemberProcedure:
- tenantServiceRemoveMemberHandler.ServeHTTP(w, r)
- case TenantServiceUpdateMemberProcedure:
- tenantServiceUpdateMemberHandler.ServeHTTP(w, r)
case TenantServiceInviteProcedure:
tenantServiceInviteHandler.ServeHTTP(w, r)
case TenantServiceInviteAcceptProcedure:
@@ -524,22 +402,6 @@ func (UnimplementedTenantServiceHandler) Delete(context.Context, *v2.TenantServi
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.Delete is not implemented"))
}
-func (UnimplementedTenantServiceHandler) Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.Leave is not implemented"))
-}
-
-func (UnimplementedTenantServiceHandler) AddMember(context.Context, *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.AddMember is not implemented"))
-}
-
-func (UnimplementedTenantServiceHandler) RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.RemoveMember is not implemented"))
-}
-
-func (UnimplementedTenantServiceHandler) UpdateMember(context.Context, *v2.TenantServiceUpdateMemberRequest) (*v2.TenantServiceUpdateMemberResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.UpdateMember is not implemented"))
-}
-
func (UnimplementedTenantServiceHandler) Invite(context.Context, *v2.TenantServiceInviteRequest) (*v2.TenantServiceInviteResponse, error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.Invite is not implemented"))
}
diff --git a/go/metalstack/api/v2/apiv2connect/tenant_member.connect.go b/go/metalstack/api/v2/apiv2connect/tenant_member.connect.go
new file mode 100644
index 00000000..3cce4c07
--- /dev/null
+++ b/go/metalstack/api/v2/apiv2connect/tenant_member.connect.go
@@ -0,0 +1,290 @@
+// Code generated by protoc-gen-connect-go. DO NOT EDIT.
+//
+// Source: metalstack/api/v2/tenant_member.proto
+
+package apiv2connect
+
+import (
+ connect "connectrpc.com/connect"
+ context "context"
+ errors "errors"
+ v2 "github.com/metal-stack/api/go/metalstack/api/v2"
+ http "net/http"
+ strings "strings"
+)
+
+// This is a compile-time assertion to ensure that this generated file and the connect package are
+// compatible. If you get a compiler error that this constant is not defined, this code was
+// generated with a version of connect newer than the one compiled into your binary. You can fix the
+// problem by either regenerating this code with an older version of connect or updating the connect
+// version compiled into your binary.
+const _ = connect.IsAtLeastVersion1_13_0
+
+const (
+ // TenantMemberServiceName is the fully-qualified name of the TenantMemberService service.
+ TenantMemberServiceName = "metalstack.api.v2.TenantMemberService"
+)
+
+// These constants are the fully-qualified names of the RPCs defined in this package. They're
+// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route.
+//
+// Note that these are different from the fully-qualified method names used by
+// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
+// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
+// period.
+const (
+ // TenantMemberServiceCreateProcedure is the fully-qualified name of the TenantMemberService's
+ // Create RPC.
+ TenantMemberServiceCreateProcedure = "/metalstack.api.v2.TenantMemberService/Create"
+ // TenantMemberServiceListProcedure is the fully-qualified name of the TenantMemberService's List
+ // RPC.
+ TenantMemberServiceListProcedure = "/metalstack.api.v2.TenantMemberService/List"
+ // TenantMemberServiceGetProcedure is the fully-qualified name of the TenantMemberService's Get RPC.
+ TenantMemberServiceGetProcedure = "/metalstack.api.v2.TenantMemberService/Get"
+ // TenantMemberServiceUpdateProcedure is the fully-qualified name of the TenantMemberService's
+ // Update RPC.
+ TenantMemberServiceUpdateProcedure = "/metalstack.api.v2.TenantMemberService/Update"
+ // TenantMemberServiceDeleteProcedure is the fully-qualified name of the TenantMemberService's
+ // Delete RPC.
+ TenantMemberServiceDeleteProcedure = "/metalstack.api.v2.TenantMemberService/Delete"
+ // TenantMemberServiceLeaveProcedure is the fully-qualified name of the TenantMemberService's Leave
+ // RPC.
+ TenantMemberServiceLeaveProcedure = "/metalstack.api.v2.TenantMemberService/Leave"
+)
+
+// TenantMemberServiceClient is a client for the metalstack.api.v2.TenantMemberService service.
+type TenantMemberServiceClient interface {
+ // Creates a new tenant member.
+ Create(context.Context, *v2.TenantMemberServiceCreateRequest) (*v2.TenantMemberServiceCreateResponse, error)
+ // Returns the list of tenant members.
+ List(context.Context, *v2.TenantMemberServiceListRequest) (*v2.TenantMemberServiceListResponse, error)
+ // Get a tenant member.
+ Get(context.Context, *v2.TenantMemberServiceGetRequest) (*v2.TenantMemberServiceGetResponse, error)
+ // Update a tenant member.
+ Update(context.Context, *v2.TenantMemberServiceUpdateRequest) (*v2.TenantMemberServiceUpdateResponse, error)
+ // Delete a tenant.
+ Delete(context.Context, *v2.TenantMemberServiceDeleteRequest) (*v2.TenantMemberServiceDeleteResponse, error)
+ // Leave removes a member from a tenant.
+ Leave(context.Context, *v2.TenantMemberServiceLeaveRequest) (*v2.TenantMemberServiceLeaveResponse, error)
+}
+
+// NewTenantMemberServiceClient constructs a client for the metalstack.api.v2.TenantMemberService
+// service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for
+// gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply
+// the connect.WithGRPC() or connect.WithGRPCWeb() options.
+//
+// The URL supplied here should be the base URL for the Connect or gRPC server (for example,
+// http://api.acme.com or https://acme.com/grpc).
+func NewTenantMemberServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) TenantMemberServiceClient {
+ baseURL = strings.TrimRight(baseURL, "/")
+ tenantMemberServiceMethods := v2.File_metalstack_api_v2_tenant_member_proto.Services().ByName("TenantMemberService").Methods()
+ return &tenantMemberServiceClient{
+ create: connect.NewClient[v2.TenantMemberServiceCreateRequest, v2.TenantMemberServiceCreateResponse](
+ httpClient,
+ baseURL+TenantMemberServiceCreateProcedure,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Create")),
+ connect.WithClientOptions(opts...),
+ ),
+ list: connect.NewClient[v2.TenantMemberServiceListRequest, v2.TenantMemberServiceListResponse](
+ httpClient,
+ baseURL+TenantMemberServiceListProcedure,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("List")),
+ connect.WithClientOptions(opts...),
+ ),
+ get: connect.NewClient[v2.TenantMemberServiceGetRequest, v2.TenantMemberServiceGetResponse](
+ httpClient,
+ baseURL+TenantMemberServiceGetProcedure,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Get")),
+ connect.WithClientOptions(opts...),
+ ),
+ update: connect.NewClient[v2.TenantMemberServiceUpdateRequest, v2.TenantMemberServiceUpdateResponse](
+ httpClient,
+ baseURL+TenantMemberServiceUpdateProcedure,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Update")),
+ connect.WithClientOptions(opts...),
+ ),
+ delete: connect.NewClient[v2.TenantMemberServiceDeleteRequest, v2.TenantMemberServiceDeleteResponse](
+ httpClient,
+ baseURL+TenantMemberServiceDeleteProcedure,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Delete")),
+ connect.WithClientOptions(opts...),
+ ),
+ leave: connect.NewClient[v2.TenantMemberServiceLeaveRequest, v2.TenantMemberServiceLeaveResponse](
+ httpClient,
+ baseURL+TenantMemberServiceLeaveProcedure,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Leave")),
+ connect.WithClientOptions(opts...),
+ ),
+ }
+}
+
+// tenantMemberServiceClient implements TenantMemberServiceClient.
+type tenantMemberServiceClient struct {
+ create *connect.Client[v2.TenantMemberServiceCreateRequest, v2.TenantMemberServiceCreateResponse]
+ list *connect.Client[v2.TenantMemberServiceListRequest, v2.TenantMemberServiceListResponse]
+ get *connect.Client[v2.TenantMemberServiceGetRequest, v2.TenantMemberServiceGetResponse]
+ update *connect.Client[v2.TenantMemberServiceUpdateRequest, v2.TenantMemberServiceUpdateResponse]
+ delete *connect.Client[v2.TenantMemberServiceDeleteRequest, v2.TenantMemberServiceDeleteResponse]
+ leave *connect.Client[v2.TenantMemberServiceLeaveRequest, v2.TenantMemberServiceLeaveResponse]
+}
+
+// Create calls metalstack.api.v2.TenantMemberService.Create.
+func (c *tenantMemberServiceClient) Create(ctx context.Context, req *v2.TenantMemberServiceCreateRequest) (*v2.TenantMemberServiceCreateResponse, error) {
+ response, err := c.create.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// List calls metalstack.api.v2.TenantMemberService.List.
+func (c *tenantMemberServiceClient) List(ctx context.Context, req *v2.TenantMemberServiceListRequest) (*v2.TenantMemberServiceListResponse, error) {
+ response, err := c.list.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Get calls metalstack.api.v2.TenantMemberService.Get.
+func (c *tenantMemberServiceClient) Get(ctx context.Context, req *v2.TenantMemberServiceGetRequest) (*v2.TenantMemberServiceGetResponse, error) {
+ response, err := c.get.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Update calls metalstack.api.v2.TenantMemberService.Update.
+func (c *tenantMemberServiceClient) Update(ctx context.Context, req *v2.TenantMemberServiceUpdateRequest) (*v2.TenantMemberServiceUpdateResponse, error) {
+ response, err := c.update.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Delete calls metalstack.api.v2.TenantMemberService.Delete.
+func (c *tenantMemberServiceClient) Delete(ctx context.Context, req *v2.TenantMemberServiceDeleteRequest) (*v2.TenantMemberServiceDeleteResponse, error) {
+ response, err := c.delete.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// Leave calls metalstack.api.v2.TenantMemberService.Leave.
+func (c *tenantMemberServiceClient) Leave(ctx context.Context, req *v2.TenantMemberServiceLeaveRequest) (*v2.TenantMemberServiceLeaveResponse, error) {
+ response, err := c.leave.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// TenantMemberServiceHandler is an implementation of the metalstack.api.v2.TenantMemberService
+// service.
+type TenantMemberServiceHandler interface {
+ // Creates a new tenant member.
+ Create(context.Context, *v2.TenantMemberServiceCreateRequest) (*v2.TenantMemberServiceCreateResponse, error)
+ // Returns the list of tenant members.
+ List(context.Context, *v2.TenantMemberServiceListRequest) (*v2.TenantMemberServiceListResponse, error)
+ // Get a tenant member.
+ Get(context.Context, *v2.TenantMemberServiceGetRequest) (*v2.TenantMemberServiceGetResponse, error)
+ // Update a tenant member.
+ Update(context.Context, *v2.TenantMemberServiceUpdateRequest) (*v2.TenantMemberServiceUpdateResponse, error)
+ // Delete a tenant.
+ Delete(context.Context, *v2.TenantMemberServiceDeleteRequest) (*v2.TenantMemberServiceDeleteResponse, error)
+ // Leave removes a member from a tenant.
+ Leave(context.Context, *v2.TenantMemberServiceLeaveRequest) (*v2.TenantMemberServiceLeaveResponse, error)
+}
+
+// NewTenantMemberServiceHandler builds an HTTP handler from the service implementation. It returns
+// the path on which to mount the handler and the handler itself.
+//
+// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf
+// and JSON codecs. They also support gzip compression.
+func NewTenantMemberServiceHandler(svc TenantMemberServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
+ tenantMemberServiceMethods := v2.File_metalstack_api_v2_tenant_member_proto.Services().ByName("TenantMemberService").Methods()
+ tenantMemberServiceCreateHandler := connect.NewUnaryHandlerSimple(
+ TenantMemberServiceCreateProcedure,
+ svc.Create,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Create")),
+ connect.WithHandlerOptions(opts...),
+ )
+ tenantMemberServiceListHandler := connect.NewUnaryHandlerSimple(
+ TenantMemberServiceListProcedure,
+ svc.List,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("List")),
+ connect.WithHandlerOptions(opts...),
+ )
+ tenantMemberServiceGetHandler := connect.NewUnaryHandlerSimple(
+ TenantMemberServiceGetProcedure,
+ svc.Get,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Get")),
+ connect.WithHandlerOptions(opts...),
+ )
+ tenantMemberServiceUpdateHandler := connect.NewUnaryHandlerSimple(
+ TenantMemberServiceUpdateProcedure,
+ svc.Update,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Update")),
+ connect.WithHandlerOptions(opts...),
+ )
+ tenantMemberServiceDeleteHandler := connect.NewUnaryHandlerSimple(
+ TenantMemberServiceDeleteProcedure,
+ svc.Delete,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Delete")),
+ connect.WithHandlerOptions(opts...),
+ )
+ tenantMemberServiceLeaveHandler := connect.NewUnaryHandlerSimple(
+ TenantMemberServiceLeaveProcedure,
+ svc.Leave,
+ connect.WithSchema(tenantMemberServiceMethods.ByName("Leave")),
+ connect.WithHandlerOptions(opts...),
+ )
+ return "/metalstack.api.v2.TenantMemberService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ switch r.URL.Path {
+ case TenantMemberServiceCreateProcedure:
+ tenantMemberServiceCreateHandler.ServeHTTP(w, r)
+ case TenantMemberServiceListProcedure:
+ tenantMemberServiceListHandler.ServeHTTP(w, r)
+ case TenantMemberServiceGetProcedure:
+ tenantMemberServiceGetHandler.ServeHTTP(w, r)
+ case TenantMemberServiceUpdateProcedure:
+ tenantMemberServiceUpdateHandler.ServeHTTP(w, r)
+ case TenantMemberServiceDeleteProcedure:
+ tenantMemberServiceDeleteHandler.ServeHTTP(w, r)
+ case TenantMemberServiceLeaveProcedure:
+ tenantMemberServiceLeaveHandler.ServeHTTP(w, r)
+ default:
+ http.NotFound(w, r)
+ }
+ })
+}
+
+// UnimplementedTenantMemberServiceHandler returns CodeUnimplemented from all methods.
+type UnimplementedTenantMemberServiceHandler struct{}
+
+func (UnimplementedTenantMemberServiceHandler) Create(context.Context, *v2.TenantMemberServiceCreateRequest) (*v2.TenantMemberServiceCreateResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantMemberService.Create is not implemented"))
+}
+
+func (UnimplementedTenantMemberServiceHandler) List(context.Context, *v2.TenantMemberServiceListRequest) (*v2.TenantMemberServiceListResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantMemberService.List is not implemented"))
+}
+
+func (UnimplementedTenantMemberServiceHandler) Get(context.Context, *v2.TenantMemberServiceGetRequest) (*v2.TenantMemberServiceGetResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantMemberService.Get is not implemented"))
+}
+
+func (UnimplementedTenantMemberServiceHandler) Update(context.Context, *v2.TenantMemberServiceUpdateRequest) (*v2.TenantMemberServiceUpdateResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantMemberService.Update is not implemented"))
+}
+
+func (UnimplementedTenantMemberServiceHandler) Delete(context.Context, *v2.TenantMemberServiceDeleteRequest) (*v2.TenantMemberServiceDeleteResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantMemberService.Delete is not implemented"))
+}
+
+func (UnimplementedTenantMemberServiceHandler) Leave(context.Context, *v2.TenantMemberServiceLeaveRequest) (*v2.TenantMemberServiceLeaveResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantMemberService.Leave is not implemented"))
+}
diff --git a/go/metalstack/api/v2/project.pb.go b/go/metalstack/api/v2/project.pb.go
index 28dbbf5b..e3de8e56 100644
--- a/go/metalstack/api/v2/project.pb.go
+++ b/go/metalstack/api/v2/project.pb.go
@@ -115,90 +115,6 @@ func (x *Project) GetAvatarUrl() string {
return ""
}
-// ProjectMember defines a user that participates in a project.
-type ProjectMember struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Id is the user id of the member.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // Role is the role of the member.
- Role ProjectRole `protobuf:"varint,2,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"`
- // InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
- // This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
- // Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members.
- InheritedMembership bool `protobuf:"varint,3,opt,name=inherited_membership,json=inheritedMembership,proto3" json:"inherited_membership,omitempty"`
- // CreatedAt the date when the member was added to the project.
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- // Meta for this project member.
- Meta *Meta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectMember) Reset() {
- *x = ProjectMember{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectMember) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectMember) ProtoMessage() {}
-
-func (x *ProjectMember) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[1]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectMember.ProtoReflect.Descriptor instead.
-func (*ProjectMember) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ProjectMember) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *ProjectMember) GetRole() ProjectRole {
- if x != nil {
- return x.Role
- }
- return ProjectRole_PROJECT_ROLE_UNSPECIFIED
-}
-
-func (x *ProjectMember) GetInheritedMembership() bool {
- if x != nil {
- return x.InheritedMembership
- }
- return false
-}
-
-func (x *ProjectMember) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *ProjectMember) GetMeta() *Meta {
- if x != nil {
- return x.Meta
- }
- return nil
-}
-
// ProjectInvite defines invite to project.
type ProjectInvite struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -226,7 +142,7 @@ type ProjectInvite struct {
func (x *ProjectInvite) Reset() {
*x = ProjectInvite{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[2]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -238,7 +154,7 @@ func (x *ProjectInvite) String() string {
func (*ProjectInvite) ProtoMessage() {}
func (x *ProjectInvite) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[2]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -251,7 +167,7 @@ func (x *ProjectInvite) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectInvite.ProtoReflect.Descriptor instead.
func (*ProjectInvite) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{2}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{1}
}
func (x *ProjectInvite) GetSecret() string {
@@ -328,7 +244,7 @@ type ProjectServiceListRequest struct {
func (x *ProjectServiceListRequest) Reset() {
*x = ProjectServiceListRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[3]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -340,7 +256,7 @@ func (x *ProjectServiceListRequest) String() string {
func (*ProjectServiceListRequest) ProtoMessage() {}
func (x *ProjectServiceListRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[3]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -353,7 +269,7 @@ func (x *ProjectServiceListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceListRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceListRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{3}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{2}
}
func (x *ProjectServiceListRequest) GetQuery() *ProjectQuery {
@@ -380,7 +296,7 @@ type ProjectQuery struct {
func (x *ProjectQuery) Reset() {
*x = ProjectQuery{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[4]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -392,7 +308,7 @@ func (x *ProjectQuery) String() string {
func (*ProjectQuery) ProtoMessage() {}
func (x *ProjectQuery) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[4]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -405,7 +321,7 @@ func (x *ProjectQuery) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectQuery.ProtoReflect.Descriptor instead.
func (*ProjectQuery) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{4}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{3}
}
func (x *ProjectQuery) GetUuid() string {
@@ -447,7 +363,7 @@ type ProjectServiceListResponse struct {
func (x *ProjectServiceListResponse) Reset() {
*x = ProjectServiceListResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[5]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -459,7 +375,7 @@ func (x *ProjectServiceListResponse) String() string {
func (*ProjectServiceListResponse) ProtoMessage() {}
func (x *ProjectServiceListResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[5]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -472,7 +388,7 @@ func (x *ProjectServiceListResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceListResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceListResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{5}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{4}
}
func (x *ProjectServiceListResponse) GetProjects() []*Project {
@@ -493,7 +409,7 @@ type ProjectServiceGetRequest struct {
func (x *ProjectServiceGetRequest) Reset() {
*x = ProjectServiceGetRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[6]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -505,7 +421,7 @@ func (x *ProjectServiceGetRequest) String() string {
func (*ProjectServiceGetRequest) ProtoMessage() {}
func (x *ProjectServiceGetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[6]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -518,7 +434,7 @@ func (x *ProjectServiceGetRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceGetRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceGetRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{6}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{5}
}
func (x *ProjectServiceGetRequest) GetProject() string {
@@ -532,16 +448,14 @@ func (x *ProjectServiceGetRequest) GetProject() string {
type ProjectServiceGetResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Project is the project.
- Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
- // ProjectMembers in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions.
- ProjectMembers []*ProjectMember `protobuf:"bytes,2,rep,name=project_members,json=projectMembers,proto3" json:"project_members,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
+ Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
}
func (x *ProjectServiceGetResponse) Reset() {
*x = ProjectServiceGetResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[7]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -553,7 +467,7 @@ func (x *ProjectServiceGetResponse) String() string {
func (*ProjectServiceGetResponse) ProtoMessage() {}
func (x *ProjectServiceGetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[7]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -566,7 +480,7 @@ func (x *ProjectServiceGetResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceGetResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceGetResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{7}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{6}
}
func (x *ProjectServiceGetResponse) GetProject() *Project {
@@ -576,13 +490,6 @@ func (x *ProjectServiceGetResponse) GetProject() *Project {
return nil
}
-func (x *ProjectServiceGetResponse) GetProjectMembers() []*ProjectMember {
- if x != nil {
- return x.ProjectMembers
- }
- return nil
-}
-
// ProjectServiceCreateRequest is the request payload to Create a project.
type ProjectServiceCreateRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -603,7 +510,7 @@ type ProjectServiceCreateRequest struct {
func (x *ProjectServiceCreateRequest) Reset() {
*x = ProjectServiceCreateRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[8]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -615,7 +522,7 @@ func (x *ProjectServiceCreateRequest) String() string {
func (*ProjectServiceCreateRequest) ProtoMessage() {}
func (x *ProjectServiceCreateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[8]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -628,7 +535,7 @@ func (x *ProjectServiceCreateRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceCreateRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceCreateRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{8}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{7}
}
func (x *ProjectServiceCreateRequest) GetLogin() string {
@@ -677,7 +584,7 @@ type ProjectServiceCreateResponse struct {
func (x *ProjectServiceCreateResponse) Reset() {
*x = ProjectServiceCreateResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[9]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -689,7 +596,7 @@ func (x *ProjectServiceCreateResponse) String() string {
func (*ProjectServiceCreateResponse) ProtoMessage() {}
func (x *ProjectServiceCreateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[9]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -702,7 +609,7 @@ func (x *ProjectServiceCreateResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceCreateResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceCreateResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{9}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{8}
}
func (x *ProjectServiceCreateResponse) GetProject() *Project {
@@ -723,7 +630,7 @@ type ProjectServiceDeleteRequest struct {
func (x *ProjectServiceDeleteRequest) Reset() {
*x = ProjectServiceDeleteRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[10]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -735,7 +642,7 @@ func (x *ProjectServiceDeleteRequest) String() string {
func (*ProjectServiceDeleteRequest) ProtoMessage() {}
func (x *ProjectServiceDeleteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[10]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -748,7 +655,7 @@ func (x *ProjectServiceDeleteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceDeleteRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceDeleteRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{10}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{9}
}
func (x *ProjectServiceDeleteRequest) GetProject() string {
@@ -769,7 +676,7 @@ type ProjectServiceDeleteResponse struct {
func (x *ProjectServiceDeleteResponse) Reset() {
*x = ProjectServiceDeleteResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[11]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -781,7 +688,7 @@ func (x *ProjectServiceDeleteResponse) String() string {
func (*ProjectServiceDeleteResponse) ProtoMessage() {}
func (x *ProjectServiceDeleteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[11]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -794,7 +701,7 @@ func (x *ProjectServiceDeleteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceDeleteResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceDeleteResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{11}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{10}
}
func (x *ProjectServiceDeleteResponse) GetProject() *Project {
@@ -825,7 +732,7 @@ type ProjectServiceUpdateRequest struct {
func (x *ProjectServiceUpdateRequest) Reset() {
*x = ProjectServiceUpdateRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[12]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -837,7 +744,7 @@ func (x *ProjectServiceUpdateRequest) String() string {
func (*ProjectServiceUpdateRequest) ProtoMessage() {}
func (x *ProjectServiceUpdateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[12]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -850,7 +757,7 @@ func (x *ProjectServiceUpdateRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceUpdateRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceUpdateRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{12}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{11}
}
func (x *ProjectServiceUpdateRequest) GetProject() string {
@@ -906,7 +813,7 @@ type ProjectServiceUpdateResponse struct {
func (x *ProjectServiceUpdateResponse) Reset() {
*x = ProjectServiceUpdateResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[13]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -918,7 +825,7 @@ func (x *ProjectServiceUpdateResponse) String() string {
func (*ProjectServiceUpdateResponse) ProtoMessage() {}
func (x *ProjectServiceUpdateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[13]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -931,7 +838,7 @@ func (x *ProjectServiceUpdateResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceUpdateResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceUpdateResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{13}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{12}
}
func (x *ProjectServiceUpdateResponse) GetProject() *Project {
@@ -954,7 +861,7 @@ type ProjectServiceInviteRequest struct {
func (x *ProjectServiceInviteRequest) Reset() {
*x = ProjectServiceInviteRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[14]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -966,7 +873,7 @@ func (x *ProjectServiceInviteRequest) String() string {
func (*ProjectServiceInviteRequest) ProtoMessage() {}
func (x *ProjectServiceInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[14]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -979,7 +886,7 @@ func (x *ProjectServiceInviteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceInviteRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{14}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{13}
}
func (x *ProjectServiceInviteRequest) GetProject() string {
@@ -1009,7 +916,7 @@ type ProjectServiceInviteResponse struct {
func (x *ProjectServiceInviteResponse) Reset() {
*x = ProjectServiceInviteResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1021,7 +928,7 @@ func (x *ProjectServiceInviteResponse) String() string {
func (*ProjectServiceInviteResponse) ProtoMessage() {}
func (x *ProjectServiceInviteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1034,7 +941,7 @@ func (x *ProjectServiceInviteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceInviteResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{15}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{14}
}
func (x *ProjectServiceInviteResponse) GetInvite() *ProjectInvite {
@@ -1055,7 +962,7 @@ type ProjectServiceInvitesListRequest struct {
func (x *ProjectServiceInvitesListRequest) Reset() {
*x = ProjectServiceInvitesListRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1067,7 +974,7 @@ func (x *ProjectServiceInvitesListRequest) String() string {
func (*ProjectServiceInvitesListRequest) ProtoMessage() {}
func (x *ProjectServiceInvitesListRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1080,7 +987,7 @@ func (x *ProjectServiceInvitesListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceInvitesListRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceInvitesListRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{16}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{15}
}
func (x *ProjectServiceInvitesListRequest) GetProject() string {
@@ -1101,7 +1008,7 @@ type ProjectServiceInvitesListResponse struct {
func (x *ProjectServiceInvitesListResponse) Reset() {
*x = ProjectServiceInvitesListResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[17]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1113,7 +1020,7 @@ func (x *ProjectServiceInvitesListResponse) String() string {
func (*ProjectServiceInvitesListResponse) ProtoMessage() {}
func (x *ProjectServiceInvitesListResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[17]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1126,7 +1033,7 @@ func (x *ProjectServiceInvitesListResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use ProjectServiceInvitesListResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceInvitesListResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{17}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{16}
}
func (x *ProjectServiceInvitesListResponse) GetInvites() []*ProjectInvite {
@@ -1147,7 +1054,7 @@ type ProjectServiceInviteGetRequest struct {
func (x *ProjectServiceInviteGetRequest) Reset() {
*x = ProjectServiceInviteGetRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[18]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1159,7 +1066,7 @@ func (x *ProjectServiceInviteGetRequest) String() string {
func (*ProjectServiceInviteGetRequest) ProtoMessage() {}
func (x *ProjectServiceInviteGetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[18]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1172,7 +1079,7 @@ func (x *ProjectServiceInviteGetRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceInviteGetRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteGetRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{18}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{17}
}
func (x *ProjectServiceInviteGetRequest) GetSecret() string {
@@ -1193,7 +1100,7 @@ type ProjectServiceInviteGetResponse struct {
func (x *ProjectServiceInviteGetResponse) Reset() {
*x = ProjectServiceInviteGetResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[19]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1205,7 +1112,7 @@ func (x *ProjectServiceInviteGetResponse) String() string {
func (*ProjectServiceInviteGetResponse) ProtoMessage() {}
func (x *ProjectServiceInviteGetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[19]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[18]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1218,7 +1125,7 @@ func (x *ProjectServiceInviteGetResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProjectServiceInviteGetResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteGetResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{19}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{18}
}
func (x *ProjectServiceInviteGetResponse) GetInvite() *ProjectInvite {
@@ -1228,410 +1135,6 @@ func (x *ProjectServiceInviteGetResponse) GetInvite() *ProjectInvite {
return nil
}
-// ProjectServiceLeaveRequest is used to leave a project.
-type ProjectServiceLeaveRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Project is the uuid of the project.
- Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceLeaveRequest) Reset() {
- *x = ProjectServiceLeaveRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceLeaveRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceLeaveRequest) ProtoMessage() {}
-
-func (x *ProjectServiceLeaveRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[20]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceLeaveRequest.ProtoReflect.Descriptor instead.
-func (*ProjectServiceLeaveRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *ProjectServiceLeaveRequest) GetProject() string {
- if x != nil {
- return x.Project
- }
- return ""
-}
-
-// ProjectServiceLeaveResponse is the response payload to a leave project request.
-type ProjectServiceLeaveResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceLeaveResponse) Reset() {
- *x = ProjectServiceLeaveResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceLeaveResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceLeaveResponse) ProtoMessage() {}
-
-func (x *ProjectServiceLeaveResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[21]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceLeaveResponse.ProtoReflect.Descriptor instead.
-func (*ProjectServiceLeaveResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{21}
-}
-
-// ProjectServiceAddMemberRequest is the request payload for adding a member to a project.
-type ProjectServiceAddMemberRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Project is the uuid of the project.
- Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
- // Login of the member to add.
- Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
- // Role to assign to the new member.
- Role ProjectRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceAddMemberRequest) Reset() {
- *x = ProjectServiceAddMemberRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[22]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceAddMemberRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceAddMemberRequest) ProtoMessage() {}
-
-func (x *ProjectServiceAddMemberRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[22]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceAddMemberRequest.ProtoReflect.Descriptor instead.
-func (*ProjectServiceAddMemberRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *ProjectServiceAddMemberRequest) GetProject() string {
- if x != nil {
- return x.Project
- }
- return ""
-}
-
-func (x *ProjectServiceAddMemberRequest) GetMember() string {
- if x != nil {
- return x.Member
- }
- return ""
-}
-
-func (x *ProjectServiceAddMemberRequest) GetRole() ProjectRole {
- if x != nil {
- return x.Role
- }
- return ProjectRole_PROJECT_ROLE_UNSPECIFIED
-}
-
-// ProjectServiceAddMemberResponse is the response payload for the add member request.
-type ProjectServiceAddMemberResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // ProjectMember is the added project member.
- ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceAddMemberResponse) Reset() {
- *x = ProjectServiceAddMemberResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceAddMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceAddMemberResponse) ProtoMessage() {}
-
-func (x *ProjectServiceAddMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[23]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceAddMemberResponse.ProtoReflect.Descriptor instead.
-func (*ProjectServiceAddMemberResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *ProjectServiceAddMemberResponse) GetProjectMember() *ProjectMember {
- if x != nil {
- return x.ProjectMember
- }
- return nil
-}
-
-// ProjectServiceRemoveMemberRequest is used to remove a member from a project.
-type ProjectServiceRemoveMemberRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Project is the uuid of the project.
- Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
- // Member is the id of the member to remove from this project.
- Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceRemoveMemberRequest) Reset() {
- *x = ProjectServiceRemoveMemberRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[24]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceRemoveMemberRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceRemoveMemberRequest) ProtoMessage() {}
-
-func (x *ProjectServiceRemoveMemberRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[24]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceRemoveMemberRequest.ProtoReflect.Descriptor instead.
-func (*ProjectServiceRemoveMemberRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *ProjectServiceRemoveMemberRequest) GetProject() string {
- if x != nil {
- return x.Project
- }
- return ""
-}
-
-func (x *ProjectServiceRemoveMemberRequest) GetMember() string {
- if x != nil {
- return x.Member
- }
- return ""
-}
-
-// ProjectServiceRemoveMemberResponse is the response payload to a remove member request.
-type ProjectServiceRemoveMemberResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // ProjectMember is the removed project member.
- ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceRemoveMemberResponse) Reset() {
- *x = ProjectServiceRemoveMemberResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceRemoveMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceRemoveMemberResponse) ProtoMessage() {}
-
-func (x *ProjectServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[25]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceRemoveMemberResponse.ProtoReflect.Descriptor instead.
-func (*ProjectServiceRemoveMemberResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *ProjectServiceRemoveMemberResponse) GetProjectMember() *ProjectMember {
- if x != nil {
- return x.ProjectMember
- }
- return nil
-}
-
-// ProjectServiceUpdateMemberRequest is used to update a member of a project.
-type ProjectServiceUpdateMemberRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Project is the uuid of the project.
- Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
- // Member is the id of the member to remove from this project.
- Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
- // Role is the role in this project the user will get after the update.
- Role ProjectRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceUpdateMemberRequest) Reset() {
- *x = ProjectServiceUpdateMemberRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[26]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceUpdateMemberRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceUpdateMemberRequest) ProtoMessage() {}
-
-func (x *ProjectServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[26]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceUpdateMemberRequest.ProtoReflect.Descriptor instead.
-func (*ProjectServiceUpdateMemberRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *ProjectServiceUpdateMemberRequest) GetProject() string {
- if x != nil {
- return x.Project
- }
- return ""
-}
-
-func (x *ProjectServiceUpdateMemberRequest) GetMember() string {
- if x != nil {
- return x.Member
- }
- return ""
-}
-
-func (x *ProjectServiceUpdateMemberRequest) GetRole() ProjectRole {
- if x != nil {
- return x.Role
- }
- return ProjectRole_PROJECT_ROLE_UNSPECIFIED
-}
-
-// ProjectServiceUpdateMemberResponse is the response payload to a update member request.
-type ProjectServiceUpdateMemberResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // ProjectMember is the updated project member.
- ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectServiceUpdateMemberResponse) Reset() {
- *x = ProjectServiceUpdateMemberResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[27]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectServiceUpdateMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectServiceUpdateMemberResponse) ProtoMessage() {}
-
-func (x *ProjectServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[27]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectServiceUpdateMemberResponse.ProtoReflect.Descriptor instead.
-func (*ProjectServiceUpdateMemberResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *ProjectServiceUpdateMemberResponse) GetProjectMember() *ProjectMember {
- if x != nil {
- return x.ProjectMember
- }
- return nil
-}
-
// ProjectServiceInviteAcceptRequest is the request payload to a accept invite request.
type ProjectServiceInviteAcceptRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -1643,7 +1146,7 @@ type ProjectServiceInviteAcceptRequest struct {
func (x *ProjectServiceInviteAcceptRequest) Reset() {
*x = ProjectServiceInviteAcceptRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[28]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1655,7 +1158,7 @@ func (x *ProjectServiceInviteAcceptRequest) String() string {
func (*ProjectServiceInviteAcceptRequest) ProtoMessage() {}
func (x *ProjectServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[28]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[19]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1668,7 +1171,7 @@ func (x *ProjectServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use ProjectServiceInviteAcceptRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteAcceptRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{28}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{19}
}
func (x *ProjectServiceInviteAcceptRequest) GetSecret() string {
@@ -1691,7 +1194,7 @@ type ProjectServiceInviteAcceptResponse struct {
func (x *ProjectServiceInviteAcceptResponse) Reset() {
*x = ProjectServiceInviteAcceptResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[29]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1703,7 +1206,7 @@ func (x *ProjectServiceInviteAcceptResponse) String() string {
func (*ProjectServiceInviteAcceptResponse) ProtoMessage() {}
func (x *ProjectServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[29]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[20]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1716,7 +1219,7 @@ func (x *ProjectServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use ProjectServiceInviteAcceptResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteAcceptResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{29}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{20}
}
func (x *ProjectServiceInviteAcceptResponse) GetProject() string {
@@ -1746,7 +1249,7 @@ type ProjectServiceInviteDeleteRequest struct {
func (x *ProjectServiceInviteDeleteRequest) Reset() {
*x = ProjectServiceInviteDeleteRequest{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[30]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1758,7 +1261,7 @@ func (x *ProjectServiceInviteDeleteRequest) String() string {
func (*ProjectServiceInviteDeleteRequest) ProtoMessage() {}
func (x *ProjectServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[30]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[21]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1771,7 +1274,7 @@ func (x *ProjectServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use ProjectServiceInviteDeleteRequest.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteDeleteRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{30}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{21}
}
func (x *ProjectServiceInviteDeleteRequest) GetProject() string {
@@ -1797,7 +1300,7 @@ type ProjectServiceInviteDeleteResponse struct {
func (x *ProjectServiceInviteDeleteResponse) Reset() {
*x = ProjectServiceInviteDeleteResponse{}
- mi := &file_metalstack_api_v2_project_proto_msgTypes[31]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1809,7 +1312,7 @@ func (x *ProjectServiceInviteDeleteResponse) String() string {
func (*ProjectServiceInviteDeleteResponse) ProtoMessage() {}
func (x *ProjectServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_project_proto_msgTypes[31]
+ mi := &file_metalstack_api_v2_project_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1822,7 +1325,7 @@ func (x *ProjectServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use ProjectServiceInviteDeleteResponse.ProtoReflect.Descriptor instead.
func (*ProjectServiceInviteDeleteResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{31}
+ return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{22}
}
var File_metalstack_api_v2_project_proto protoreflect.FileDescriptor
@@ -1838,14 +1341,7 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" +
"\x06tenant\x18\x05 \x01(\tR\x06tenant\x12/\n" +
"\n" +
"avatar_url\x18\x06 \x01(\tB\v\xbaH\br\x06à³®\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01B\r\n" +
- "\v_avatar_url\"\xf8\x01\n" +
- "\rProjectMember\x12\x0e\n" +
- "\x02id\x18\x01 \x01(\tR\x02id\x12<\n" +
- "\x04role\x18\x02 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x121\n" +
- "\x14inherited_membership\x18\x03 \x01(\bR\x13inheritedMembership\x129\n" +
- "\n" +
- "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n" +
- "\x04meta\x18\x05 \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\"\xe7\x02\n" +
+ "\v_avatar_url\"\xe7\x02\n" +
"\rProjectInvite\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n" +
"\aproject\x18\x02 \x01(\tR\aproject\x12<\n" +
@@ -1872,10 +1368,9 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" +
"\x1aProjectServiceListResponse\x126\n" +
"\bprojects\x18\x01 \x03(\v2\x1a.metalstack.api.v2.ProjectR\bprojects\">\n" +
"\x18ProjectServiceGetRequest\x12\"\n" +
- "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\"\x9c\x01\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\"Q\n" +
"\x19ProjectServiceGetResponse\x124\n" +
- "\aproject\x18\x01 \x01(\v2\x1a.metalstack.api.v2.ProjectR\aproject\x12I\n" +
- "\x0fproject_members\x18\x02 \x03(\v2 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\x83\x02\n" +
+ "\aproject\x18\x01 \x01(\v2\x1a.metalstack.api.v2.ProjectR\aproject\"\x83\x02\n" +
"\x1bProjectServiceCreateRequest\x12!\n" +
"\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n" +
"\x04name\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n" +
@@ -1917,27 +1412,7 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" +
"\x1eProjectServiceInviteGetRequest\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\"[\n" +
"\x1fProjectServiceInviteGetResponse\x128\n" +
- "\x06invite\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n" +
- "\x1aProjectServiceLeaveRequest\x12\"\n" +
- "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\"\x1d\n" +
- "\x1bProjectServiceLeaveResponse\"\xa7\x01\n" +
- "\x1eProjectServiceAddMemberRequest\x12\"\n" +
- "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12#\n" +
- "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n" +
- "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"j\n" +
- "\x1fProjectServiceAddMemberResponse\x12G\n" +
- "\x0eproject_member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\rprojectMember\"_\n" +
- "!ProjectServiceRemoveMemberRequest\x12\"\n" +
- "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" +
- "\x06member\x18\x02 \x01(\tR\x06member\"m\n" +
- "\"ProjectServiceRemoveMemberResponse\x12G\n" +
- "\x0eproject_member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\rprojectMember\"\x9d\x01\n" +
- "!ProjectServiceUpdateMemberRequest\x12\"\n" +
- "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" +
- "\x06member\x18\x02 \x01(\tR\x06member\x12<\n" +
- "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n" +
- "\"ProjectServiceUpdateMemberResponse\x12G\n" +
- "\x0eproject_member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n" +
+ "\x06invite\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectInviteR\x06invite\";\n" +
"!ProjectServiceInviteAcceptRequest\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\"a\n" +
"\"ProjectServiceInviteAcceptResponse\x12\x18\n" +
@@ -1946,7 +1421,7 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" +
"!ProjectServiceInviteDeleteRequest\x12\"\n" +
"\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" +
"\x06secret\x18\x02 \x01(\tR\x06secret\"$\n" +
- "\"ProjectServiceInviteDeleteResponse2\xe1\r\n" +
+ "\"ProjectServiceInviteDeleteResponse2\xdd\t\n" +
"\x0eProjectService\x12m\n" +
"\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12m\n" +
"\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\v\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n" +
@@ -1954,11 +1429,7 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" +
"\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n" +
"\x06Delete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n" +
"\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n" +
- "\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n" +
- "\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12}\n" +
- "\tAddMember\x121.metalstack.api.v2.ProjectServiceAddMemberRequest\x1a2.metalstack.api.v2.ProjectServiceAddMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n" +
- "\fRemoveMember\x124.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a5.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n" +
- "\fUpdateMember\x124.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a5.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n" +
+ "\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n" +
"\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n" +
"\fInviteAccept\x124.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a5.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x86\x01\n" +
"\fInviteDelete\x124.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a5.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n" +
@@ -1978,108 +1449,82 @@ func file_metalstack_api_v2_project_proto_rawDescGZIP() []byte {
return file_metalstack_api_v2_project_proto_rawDescData
}
-var file_metalstack_api_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
+var file_metalstack_api_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_metalstack_api_v2_project_proto_goTypes = []any{
(*Project)(nil), // 0: metalstack.api.v2.Project
- (*ProjectMember)(nil), // 1: metalstack.api.v2.ProjectMember
- (*ProjectInvite)(nil), // 2: metalstack.api.v2.ProjectInvite
- (*ProjectServiceListRequest)(nil), // 3: metalstack.api.v2.ProjectServiceListRequest
- (*ProjectQuery)(nil), // 4: metalstack.api.v2.ProjectQuery
- (*ProjectServiceListResponse)(nil), // 5: metalstack.api.v2.ProjectServiceListResponse
- (*ProjectServiceGetRequest)(nil), // 6: metalstack.api.v2.ProjectServiceGetRequest
- (*ProjectServiceGetResponse)(nil), // 7: metalstack.api.v2.ProjectServiceGetResponse
- (*ProjectServiceCreateRequest)(nil), // 8: metalstack.api.v2.ProjectServiceCreateRequest
- (*ProjectServiceCreateResponse)(nil), // 9: metalstack.api.v2.ProjectServiceCreateResponse
- (*ProjectServiceDeleteRequest)(nil), // 10: metalstack.api.v2.ProjectServiceDeleteRequest
- (*ProjectServiceDeleteResponse)(nil), // 11: metalstack.api.v2.ProjectServiceDeleteResponse
- (*ProjectServiceUpdateRequest)(nil), // 12: metalstack.api.v2.ProjectServiceUpdateRequest
- (*ProjectServiceUpdateResponse)(nil), // 13: metalstack.api.v2.ProjectServiceUpdateResponse
- (*ProjectServiceInviteRequest)(nil), // 14: metalstack.api.v2.ProjectServiceInviteRequest
- (*ProjectServiceInviteResponse)(nil), // 15: metalstack.api.v2.ProjectServiceInviteResponse
- (*ProjectServiceInvitesListRequest)(nil), // 16: metalstack.api.v2.ProjectServiceInvitesListRequest
- (*ProjectServiceInvitesListResponse)(nil), // 17: metalstack.api.v2.ProjectServiceInvitesListResponse
- (*ProjectServiceInviteGetRequest)(nil), // 18: metalstack.api.v2.ProjectServiceInviteGetRequest
- (*ProjectServiceInviteGetResponse)(nil), // 19: metalstack.api.v2.ProjectServiceInviteGetResponse
- (*ProjectServiceLeaveRequest)(nil), // 20: metalstack.api.v2.ProjectServiceLeaveRequest
- (*ProjectServiceLeaveResponse)(nil), // 21: metalstack.api.v2.ProjectServiceLeaveResponse
- (*ProjectServiceAddMemberRequest)(nil), // 22: metalstack.api.v2.ProjectServiceAddMemberRequest
- (*ProjectServiceAddMemberResponse)(nil), // 23: metalstack.api.v2.ProjectServiceAddMemberResponse
- (*ProjectServiceRemoveMemberRequest)(nil), // 24: metalstack.api.v2.ProjectServiceRemoveMemberRequest
- (*ProjectServiceRemoveMemberResponse)(nil), // 25: metalstack.api.v2.ProjectServiceRemoveMemberResponse
- (*ProjectServiceUpdateMemberRequest)(nil), // 26: metalstack.api.v2.ProjectServiceUpdateMemberRequest
- (*ProjectServiceUpdateMemberResponse)(nil), // 27: metalstack.api.v2.ProjectServiceUpdateMemberResponse
- (*ProjectServiceInviteAcceptRequest)(nil), // 28: metalstack.api.v2.ProjectServiceInviteAcceptRequest
- (*ProjectServiceInviteAcceptResponse)(nil), // 29: metalstack.api.v2.ProjectServiceInviteAcceptResponse
- (*ProjectServiceInviteDeleteRequest)(nil), // 30: metalstack.api.v2.ProjectServiceInviteDeleteRequest
- (*ProjectServiceInviteDeleteResponse)(nil), // 31: metalstack.api.v2.ProjectServiceInviteDeleteResponse
- (*Meta)(nil), // 32: metalstack.api.v2.Meta
- (ProjectRole)(0), // 33: metalstack.api.v2.ProjectRole
- (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp
- (*Labels)(nil), // 35: metalstack.api.v2.Labels
- (*UpdateMeta)(nil), // 36: metalstack.api.v2.UpdateMeta
- (*UpdateLabels)(nil), // 37: metalstack.api.v2.UpdateLabels
+ (*ProjectInvite)(nil), // 1: metalstack.api.v2.ProjectInvite
+ (*ProjectServiceListRequest)(nil), // 2: metalstack.api.v2.ProjectServiceListRequest
+ (*ProjectQuery)(nil), // 3: metalstack.api.v2.ProjectQuery
+ (*ProjectServiceListResponse)(nil), // 4: metalstack.api.v2.ProjectServiceListResponse
+ (*ProjectServiceGetRequest)(nil), // 5: metalstack.api.v2.ProjectServiceGetRequest
+ (*ProjectServiceGetResponse)(nil), // 6: metalstack.api.v2.ProjectServiceGetResponse
+ (*ProjectServiceCreateRequest)(nil), // 7: metalstack.api.v2.ProjectServiceCreateRequest
+ (*ProjectServiceCreateResponse)(nil), // 8: metalstack.api.v2.ProjectServiceCreateResponse
+ (*ProjectServiceDeleteRequest)(nil), // 9: metalstack.api.v2.ProjectServiceDeleteRequest
+ (*ProjectServiceDeleteResponse)(nil), // 10: metalstack.api.v2.ProjectServiceDeleteResponse
+ (*ProjectServiceUpdateRequest)(nil), // 11: metalstack.api.v2.ProjectServiceUpdateRequest
+ (*ProjectServiceUpdateResponse)(nil), // 12: metalstack.api.v2.ProjectServiceUpdateResponse
+ (*ProjectServiceInviteRequest)(nil), // 13: metalstack.api.v2.ProjectServiceInviteRequest
+ (*ProjectServiceInviteResponse)(nil), // 14: metalstack.api.v2.ProjectServiceInviteResponse
+ (*ProjectServiceInvitesListRequest)(nil), // 15: metalstack.api.v2.ProjectServiceInvitesListRequest
+ (*ProjectServiceInvitesListResponse)(nil), // 16: metalstack.api.v2.ProjectServiceInvitesListResponse
+ (*ProjectServiceInviteGetRequest)(nil), // 17: metalstack.api.v2.ProjectServiceInviteGetRequest
+ (*ProjectServiceInviteGetResponse)(nil), // 18: metalstack.api.v2.ProjectServiceInviteGetResponse
+ (*ProjectServiceInviteAcceptRequest)(nil), // 19: metalstack.api.v2.ProjectServiceInviteAcceptRequest
+ (*ProjectServiceInviteAcceptResponse)(nil), // 20: metalstack.api.v2.ProjectServiceInviteAcceptResponse
+ (*ProjectServiceInviteDeleteRequest)(nil), // 21: metalstack.api.v2.ProjectServiceInviteDeleteRequest
+ (*ProjectServiceInviteDeleteResponse)(nil), // 22: metalstack.api.v2.ProjectServiceInviteDeleteResponse
+ (*Meta)(nil), // 23: metalstack.api.v2.Meta
+ (ProjectRole)(0), // 24: metalstack.api.v2.ProjectRole
+ (*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp
+ (*Labels)(nil), // 26: metalstack.api.v2.Labels
+ (*UpdateMeta)(nil), // 27: metalstack.api.v2.UpdateMeta
+ (*UpdateLabels)(nil), // 28: metalstack.api.v2.UpdateLabels
}
var file_metalstack_api_v2_project_proto_depIdxs = []int32{
- 32, // 0: metalstack.api.v2.Project.meta:type_name -> metalstack.api.v2.Meta
- 33, // 1: metalstack.api.v2.ProjectMember.role:type_name -> metalstack.api.v2.ProjectRole
- 34, // 2: metalstack.api.v2.ProjectMember.created_at:type_name -> google.protobuf.Timestamp
- 32, // 3: metalstack.api.v2.ProjectMember.meta:type_name -> metalstack.api.v2.Meta
- 33, // 4: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole
- 34, // 5: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp
- 34, // 6: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp
- 4, // 7: metalstack.api.v2.ProjectServiceListRequest.query:type_name -> metalstack.api.v2.ProjectQuery
- 35, // 8: metalstack.api.v2.ProjectQuery.labels:type_name -> metalstack.api.v2.Labels
- 0, // 9: metalstack.api.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
- 0, // 10: metalstack.api.v2.ProjectServiceGetResponse.project:type_name -> metalstack.api.v2.Project
- 1, // 11: metalstack.api.v2.ProjectServiceGetResponse.project_members:type_name -> metalstack.api.v2.ProjectMember
- 35, // 12: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 0, // 13: metalstack.api.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
- 0, // 14: metalstack.api.v2.ProjectServiceDeleteResponse.project:type_name -> metalstack.api.v2.Project
- 36, // 15: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 37, // 16: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
- 0, // 17: metalstack.api.v2.ProjectServiceUpdateResponse.project:type_name -> metalstack.api.v2.Project
- 33, // 18: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole
- 2, // 19: metalstack.api.v2.ProjectServiceInviteResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
- 2, // 20: metalstack.api.v2.ProjectServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.ProjectInvite
- 2, // 21: metalstack.api.v2.ProjectServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
- 33, // 22: metalstack.api.v2.ProjectServiceAddMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
- 1, // 23: metalstack.api.v2.ProjectServiceAddMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
- 1, // 24: metalstack.api.v2.ProjectServiceRemoveMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
- 33, // 25: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
- 1, // 26: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
- 3, // 27: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest
- 6, // 28: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest
- 8, // 29: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest
- 10, // 30: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest
- 12, // 31: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest
- 20, // 32: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest
- 22, // 33: metalstack.api.v2.ProjectService.AddMember:input_type -> metalstack.api.v2.ProjectServiceAddMemberRequest
- 24, // 34: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest
- 26, // 35: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest
- 14, // 36: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest
- 28, // 37: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest
- 30, // 38: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest
- 16, // 39: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest
- 18, // 40: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest
- 5, // 41: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse
- 7, // 42: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse
- 9, // 43: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse
- 11, // 44: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse
- 13, // 45: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse
- 21, // 46: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse
- 23, // 47: metalstack.api.v2.ProjectService.AddMember:output_type -> metalstack.api.v2.ProjectServiceAddMemberResponse
- 25, // 48: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse
- 27, // 49: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse
- 15, // 50: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse
- 29, // 51: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse
- 31, // 52: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse
- 17, // 53: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse
- 19, // 54: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse
- 41, // [41:55] is the sub-list for method output_type
- 27, // [27:41] is the sub-list for method input_type
- 27, // [27:27] is the sub-list for extension type_name
- 27, // [27:27] is the sub-list for extension extendee
- 0, // [0:27] is the sub-list for field type_name
+ 23, // 0: metalstack.api.v2.Project.meta:type_name -> metalstack.api.v2.Meta
+ 24, // 1: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole
+ 25, // 2: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp
+ 25, // 3: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp
+ 3, // 4: metalstack.api.v2.ProjectServiceListRequest.query:type_name -> metalstack.api.v2.ProjectQuery
+ 26, // 5: metalstack.api.v2.ProjectQuery.labels:type_name -> metalstack.api.v2.Labels
+ 0, // 6: metalstack.api.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
+ 0, // 7: metalstack.api.v2.ProjectServiceGetResponse.project:type_name -> metalstack.api.v2.Project
+ 26, // 8: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 0, // 9: metalstack.api.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
+ 0, // 10: metalstack.api.v2.ProjectServiceDeleteResponse.project:type_name -> metalstack.api.v2.Project
+ 27, // 11: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 28, // 12: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 0, // 13: metalstack.api.v2.ProjectServiceUpdateResponse.project:type_name -> metalstack.api.v2.Project
+ 24, // 14: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole
+ 1, // 15: metalstack.api.v2.ProjectServiceInviteResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
+ 1, // 16: metalstack.api.v2.ProjectServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.ProjectInvite
+ 1, // 17: metalstack.api.v2.ProjectServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
+ 2, // 18: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest
+ 5, // 19: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest
+ 7, // 20: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest
+ 9, // 21: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest
+ 11, // 22: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest
+ 13, // 23: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest
+ 19, // 24: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest
+ 21, // 25: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest
+ 15, // 26: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest
+ 17, // 27: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest
+ 4, // 28: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse
+ 6, // 29: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse
+ 8, // 30: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse
+ 10, // 31: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse
+ 12, // 32: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse
+ 14, // 33: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse
+ 20, // 34: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse
+ 22, // 35: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse
+ 16, // 36: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse
+ 18, // 37: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse
+ 28, // [28:38] is the sub-list for method output_type
+ 18, // [18:28] is the sub-list for method input_type
+ 18, // [18:18] is the sub-list for extension type_name
+ 18, // [18:18] is the sub-list for extension extendee
+ 0, // [0:18] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_project_proto_init() }
@@ -2090,16 +1535,16 @@ func file_metalstack_api_v2_project_proto_init() {
file_metalstack_api_v2_common_proto_init()
file_metalstack_api_v2_predefined_rules_proto_init()
file_metalstack_api_v2_project_proto_msgTypes[0].OneofWrappers = []any{}
- file_metalstack_api_v2_project_proto_msgTypes[4].OneofWrappers = []any{}
- file_metalstack_api_v2_project_proto_msgTypes[8].OneofWrappers = []any{}
- file_metalstack_api_v2_project_proto_msgTypes[12].OneofWrappers = []any{}
+ file_metalstack_api_v2_project_proto_msgTypes[3].OneofWrappers = []any{}
+ file_metalstack_api_v2_project_proto_msgTypes[7].OneofWrappers = []any{}
+ file_metalstack_api_v2_project_proto_msgTypes[11].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_project_proto_rawDesc), len(file_metalstack_api_v2_project_proto_rawDesc)),
NumEnums: 0,
- NumMessages: 32,
+ NumMessages: 23,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/metalstack/api/v2/project_member.pb.go b/go/metalstack/api/v2/project_member.pb.go
new file mode 100644
index 00000000..94f5fbc7
--- /dev/null
+++ b/go/metalstack/api/v2/project_member.pb.go
@@ -0,0 +1,940 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.12
+// protoc (unknown)
+// source: metalstack/api/v2/project_member.proto
+
+package apiv2
+
+import (
+ _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// ProjectMember defines a user that participates in a project.
+type ProjectMember struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the user id of the member.
+ Member string `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ // Role is the role of the member.
+ Role ProjectRole `protobuf:"varint,2,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"`
+ // InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
+ // This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
+ // Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members.
+ InheritedMembership bool `protobuf:"varint,3,opt,name=inherited_membership,json=inheritedMembership,proto3" json:"inherited_membership,omitempty"`
+ // CreatedAt the date when the member was added to the project.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // Meta for this project member.
+ Meta *Meta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMember) Reset() {
+ *x = ProjectMember{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMember) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMember) ProtoMessage() {}
+
+func (x *ProjectMember) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMember.ProtoReflect.Descriptor instead.
+func (*ProjectMember) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ProjectMember) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+func (x *ProjectMember) GetRole() ProjectRole {
+ if x != nil {
+ return x.Role
+ }
+ return ProjectRole_PROJECT_ROLE_UNSPECIFIED
+}
+
+func (x *ProjectMember) GetInheritedMembership() bool {
+ if x != nil {
+ return x.InheritedMembership
+ }
+ return false
+}
+
+func (x *ProjectMember) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *ProjectMember) GetMeta() *Meta {
+ if x != nil {
+ return x.Meta
+ }
+ return nil
+}
+
+// ProjectQuery is used to search projects.
+type ProjectMemberQuery struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the user id of the member.
+ Member *string `protobuf:"bytes,1,opt,name=member,proto3,oneof" json:"member,omitempty"`
+ // Role is the role of the member.
+ Role *ProjectRole `protobuf:"varint,2,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole,oneof" json:"role,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberQuery) Reset() {
+ *x = ProjectMemberQuery{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberQuery) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberQuery) ProtoMessage() {}
+
+func (x *ProjectMemberQuery) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberQuery.ProtoReflect.Descriptor instead.
+func (*ProjectMemberQuery) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *ProjectMemberQuery) GetMember() string {
+ if x != nil && x.Member != nil {
+ return *x.Member
+ }
+ return ""
+}
+
+func (x *ProjectMemberQuery) GetRole() ProjectRole {
+ if x != nil && x.Role != nil {
+ return *x.Role
+ }
+ return ProjectRole_PROJECT_ROLE_UNSPECIFIED
+}
+
+// ProjectMemberServiceListRequest is the request payload to list all project members.
+type ProjectMemberServiceListRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project is the uuid of the project.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // Query for projects.
+ Query *ProjectMemberQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceListRequest) Reset() {
+ *x = ProjectMemberServiceListRequest{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceListRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceListRequest) ProtoMessage() {}
+
+func (x *ProjectMemberServiceListRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceListRequest.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceListRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ProjectMemberServiceListRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectMemberServiceListRequest) GetQuery() *ProjectMemberQuery {
+ if x != nil {
+ return x.Query
+ }
+ return nil
+}
+
+// ProjectMemberServiceGetRequest is the request payload to get a project.
+type ProjectMemberServiceGetRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project is the uuid of the project.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // Member is the user id of the member.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceGetRequest) Reset() {
+ *x = ProjectMemberServiceGetRequest{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceGetRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceGetRequest) ProtoMessage() {}
+
+func (x *ProjectMemberServiceGetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceGetRequest.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceGetRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ProjectMemberServiceGetRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectMemberServiceGetRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+// ProjectMemberServiceCreateRequest is the request payload to Create a project.
+type ProjectMemberServiceCreateRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project is the uuid of the project.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // Login of the member to add.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ // Role to assign to the new member.
+ Role ProjectRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceCreateRequest) Reset() {
+ *x = ProjectMemberServiceCreateRequest{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceCreateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceCreateRequest) ProtoMessage() {}
+
+func (x *ProjectMemberServiceCreateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceCreateRequest.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceCreateRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ProjectMemberServiceCreateRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectMemberServiceCreateRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+func (x *ProjectMemberServiceCreateRequest) GetRole() ProjectRole {
+ if x != nil {
+ return x.Role
+ }
+ return ProjectRole_PROJECT_ROLE_UNSPECIFIED
+}
+
+// ProjectMemberServiceUpdateRequest is the request payload to update a project.
+type ProjectMemberServiceUpdateRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project is the uuid of the project.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // Member is the id of the member to remove from this project.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ // Role is the role in this project the user will get after the update.
+ Role ProjectRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"`
+ // UpdateMeta contains the timestamp and strategy to be used in this update request.
+ UpdateMeta *UpdateMeta `protobuf:"bytes,4,opt,name=update_meta,json=updateMeta,proto3" json:"update_meta,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceUpdateRequest) Reset() {
+ *x = ProjectMemberServiceUpdateRequest{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceUpdateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceUpdateRequest) ProtoMessage() {}
+
+func (x *ProjectMemberServiceUpdateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceUpdateRequest.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceUpdateRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *ProjectMemberServiceUpdateRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectMemberServiceUpdateRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+func (x *ProjectMemberServiceUpdateRequest) GetRole() ProjectRole {
+ if x != nil {
+ return x.Role
+ }
+ return ProjectRole_PROJECT_ROLE_UNSPECIFIED
+}
+
+func (x *ProjectMemberServiceUpdateRequest) GetUpdateMeta() *UpdateMeta {
+ if x != nil {
+ return x.UpdateMeta
+ }
+ return nil
+}
+
+// ProjectMemberServiceDeleteRequest is the request payload to delete a project.
+type ProjectMemberServiceDeleteRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project is the uuid of the project.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ // Member is the id of the member to remove from this project.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceDeleteRequest) Reset() {
+ *x = ProjectMemberServiceDeleteRequest{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceDeleteRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceDeleteRequest) ProtoMessage() {}
+
+func (x *ProjectMemberServiceDeleteRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceDeleteRequest.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceDeleteRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *ProjectMemberServiceDeleteRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ProjectMemberServiceDeleteRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+// ProjectMemberServiceListResponse is the response payload to list all project members.
+type ProjectMemberServiceListResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Members is a list of project members.
+ Members []*ProjectMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceListResponse) Reset() {
+ *x = ProjectMemberServiceListResponse{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceListResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceListResponse) ProtoMessage() {}
+
+func (x *ProjectMemberServiceListResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceListResponse.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceListResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *ProjectMemberServiceListResponse) GetMembers() []*ProjectMember {
+ if x != nil {
+ return x.Members
+ }
+ return nil
+}
+
+// ProjectMemberServiceGetResponse is the response payload to get a projects.
+type ProjectMemberServiceGetResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions.
+ Member []*ProjectMember `protobuf:"bytes,1,rep,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceGetResponse) Reset() {
+ *x = ProjectMemberServiceGetResponse{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceGetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceGetResponse) ProtoMessage() {}
+
+func (x *ProjectMemberServiceGetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[8]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceGetResponse.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceGetResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *ProjectMemberServiceGetResponse) GetMember() []*ProjectMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// ProjectMemberServiceCreateResponse is the response payload to create a project member.
+type ProjectMemberServiceCreateResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the created project member
+ Member *ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceCreateResponse) Reset() {
+ *x = ProjectMemberServiceCreateResponse{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceCreateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceCreateResponse) ProtoMessage() {}
+
+func (x *ProjectMemberServiceCreateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[9]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceCreateResponse.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceCreateResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *ProjectMemberServiceCreateResponse) GetMember() *ProjectMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// ProjectMemberServiceDeleteResponse is the response payload to delete a project member.
+type ProjectMemberServiceDeleteResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the deleted project member
+ Member *ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceDeleteResponse) Reset() {
+ *x = ProjectMemberServiceDeleteResponse{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceDeleteResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceDeleteResponse) ProtoMessage() {}
+
+func (x *ProjectMemberServiceDeleteResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[10]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceDeleteResponse.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceDeleteResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *ProjectMemberServiceDeleteResponse) GetMember() *ProjectMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// ProjectMemberServiceUpdateResponse is the response payload to update a project member.
+type ProjectMemberServiceUpdateResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the updated project member
+ Member *ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceUpdateResponse) Reset() {
+ *x = ProjectMemberServiceUpdateResponse{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceUpdateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceUpdateResponse) ProtoMessage() {}
+
+func (x *ProjectMemberServiceUpdateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[11]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceUpdateResponse.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceUpdateResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *ProjectMemberServiceUpdateResponse) GetMember() *ProjectMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// ProjectMemberServiceLeaveRequest is used to leave a project. This way a member is not required to ask a project owner to remove him.
+type ProjectMemberServiceLeaveRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Project of the uuid of the project that the user wants to leave.
+ Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceLeaveRequest) Reset() {
+ *x = ProjectMemberServiceLeaveRequest{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceLeaveRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceLeaveRequest) ProtoMessage() {}
+
+func (x *ProjectMemberServiceLeaveRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[12]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceLeaveRequest.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceLeaveRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *ProjectMemberServiceLeaveRequest) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+// ProjectMemberServiceLeaveResponse is the response payload to a leave project request.
+type ProjectMemberServiceLeaveResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the member of this project.
+ Member *ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ProjectMemberServiceLeaveResponse) Reset() {
+ *x = ProjectMemberServiceLeaveResponse{}
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ProjectMemberServiceLeaveResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProjectMemberServiceLeaveResponse) ProtoMessage() {}
+
+func (x *ProjectMemberServiceLeaveResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_project_member_proto_msgTypes[13]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProjectMemberServiceLeaveResponse.ProtoReflect.Descriptor instead.
+func (*ProjectMemberServiceLeaveResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_project_member_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *ProjectMemberServiceLeaveResponse) GetMember() *ProjectMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+var File_metalstack_api_v2_project_member_proto protoreflect.FileDescriptor
+
+const file_metalstack_api_v2_project_member_proto_rawDesc = "" +
+ "\n" +
+ "&metalstack/api/v2/project_member.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\x8d\x02\n" +
+ "\rProjectMember\x12#\n" +
+ "\x06member\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n" +
+ "\x04role\x18\x02 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x121\n" +
+ "\x14inherited_membership\x18\x03 \x01(\bR\x13inheritedMembership\x129\n" +
+ "\n" +
+ "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n" +
+ "\x04meta\x18\x05 \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\"\x95\x01\n" +
+ "\x12ProjectMemberQuery\x12(\n" +
+ "\x06member\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01H\x00R\x06member\x88\x01\x01\x12A\n" +
+ "\x04role\x18\x02 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x04role\x88\x01\x01B\t\n" +
+ "\a_memberB\a\n" +
+ "\x05_role\"\x82\x01\n" +
+ "\x1fProjectMemberServiceListRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12;\n" +
+ "\x05query\x18\x02 \x01(\v2%.metalstack.api.v2.ProjectMemberQueryR\x05query\"i\n" +
+ "\x1eProjectMemberServiceGetRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12#\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"\xaa\x01\n" +
+ "!ProjectMemberServiceCreateRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12#\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n" +
+ "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"\xe5\x01\n" +
+ "!ProjectMemberServiceUpdateRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" +
+ "\x06member\x18\x02 \x01(\tR\x06member\x12<\n" +
+ "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12F\n" +
+ "\vupdate_meta\x18\x04 \x01(\v2\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\n" +
+ "updateMeta\"_\n" +
+ "!ProjectMemberServiceDeleteRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" +
+ "\x06member\x18\x02 \x01(\tR\x06member\"^\n" +
+ " ProjectMemberServiceListResponse\x12:\n" +
+ "\amembers\x18\x01 \x03(\v2 .metalstack.api.v2.ProjectMemberR\amembers\"[\n" +
+ "\x1fProjectMemberServiceGetResponse\x128\n" +
+ "\x06member\x18\x01 \x03(\v2 .metalstack.api.v2.ProjectMemberR\x06member\"^\n" +
+ "\"ProjectMemberServiceCreateResponse\x128\n" +
+ "\x06member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\x06member\"^\n" +
+ "\"ProjectMemberServiceDeleteResponse\x128\n" +
+ "\x06member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\x06member\"^\n" +
+ "\"ProjectMemberServiceUpdateResponse\x128\n" +
+ "\x06member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\x06member\"F\n" +
+ " ProjectMemberServiceLeaveRequest\x12\"\n" +
+ "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\"]\n" +
+ "!ProjectMemberServiceLeaveResponse\x128\n" +
+ "\x06member\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectMemberR\x06member2\x96\x06\n" +
+ "\x14ProjectMemberService\x12|\n" +
+ "\x04List\x122.metalstack.api.v2.ProjectMemberServiceListRequest\x1a3.metalstack.api.v2.ProjectMemberServiceListResponse\"\v\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12y\n" +
+ "\x03Get\x121.metalstack.api.v2.ProjectMemberServiceGetRequest\x1a2.metalstack.api.v2.ProjectMemberServiceGetResponse\"\v\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12\x80\x01\n" +
+ "\x06Create\x124.metalstack.api.v2.ProjectMemberServiceCreateRequest\x1a5.metalstack.api.v2.ProjectMemberServiceCreateResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x80\x01\n" +
+ "\x06Delete\x124.metalstack.api.v2.ProjectMemberServiceDeleteRequest\x1a5.metalstack.api.v2.ProjectMemberServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x80\x01\n" +
+ "\x06Update\x124.metalstack.api.v2.ProjectMemberServiceUpdateRequest\x1a5.metalstack.api.v2.ProjectMemberServiceUpdateResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12|\n" +
+ "\x05Leave\x123.metalstack.api.v2.ProjectMemberServiceLeaveRequest\x1a4.metalstack.api.v2.ProjectMemberServiceLeaveResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01B\xc8\x01\n" +
+ "\x15com.metalstack.api.v2B\x12ProjectMemberProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3"
+
+var (
+ file_metalstack_api_v2_project_member_proto_rawDescOnce sync.Once
+ file_metalstack_api_v2_project_member_proto_rawDescData []byte
+)
+
+func file_metalstack_api_v2_project_member_proto_rawDescGZIP() []byte {
+ file_metalstack_api_v2_project_member_proto_rawDescOnce.Do(func() {
+ file_metalstack_api_v2_project_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_project_member_proto_rawDesc), len(file_metalstack_api_v2_project_member_proto_rawDesc)))
+ })
+ return file_metalstack_api_v2_project_member_proto_rawDescData
+}
+
+var file_metalstack_api_v2_project_member_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
+var file_metalstack_api_v2_project_member_proto_goTypes = []any{
+ (*ProjectMember)(nil), // 0: metalstack.api.v2.ProjectMember
+ (*ProjectMemberQuery)(nil), // 1: metalstack.api.v2.ProjectMemberQuery
+ (*ProjectMemberServiceListRequest)(nil), // 2: metalstack.api.v2.ProjectMemberServiceListRequest
+ (*ProjectMemberServiceGetRequest)(nil), // 3: metalstack.api.v2.ProjectMemberServiceGetRequest
+ (*ProjectMemberServiceCreateRequest)(nil), // 4: metalstack.api.v2.ProjectMemberServiceCreateRequest
+ (*ProjectMemberServiceUpdateRequest)(nil), // 5: metalstack.api.v2.ProjectMemberServiceUpdateRequest
+ (*ProjectMemberServiceDeleteRequest)(nil), // 6: metalstack.api.v2.ProjectMemberServiceDeleteRequest
+ (*ProjectMemberServiceListResponse)(nil), // 7: metalstack.api.v2.ProjectMemberServiceListResponse
+ (*ProjectMemberServiceGetResponse)(nil), // 8: metalstack.api.v2.ProjectMemberServiceGetResponse
+ (*ProjectMemberServiceCreateResponse)(nil), // 9: metalstack.api.v2.ProjectMemberServiceCreateResponse
+ (*ProjectMemberServiceDeleteResponse)(nil), // 10: metalstack.api.v2.ProjectMemberServiceDeleteResponse
+ (*ProjectMemberServiceUpdateResponse)(nil), // 11: metalstack.api.v2.ProjectMemberServiceUpdateResponse
+ (*ProjectMemberServiceLeaveRequest)(nil), // 12: metalstack.api.v2.ProjectMemberServiceLeaveRequest
+ (*ProjectMemberServiceLeaveResponse)(nil), // 13: metalstack.api.v2.ProjectMemberServiceLeaveResponse
+ (ProjectRole)(0), // 14: metalstack.api.v2.ProjectRole
+ (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp
+ (*Meta)(nil), // 16: metalstack.api.v2.Meta
+ (*UpdateMeta)(nil), // 17: metalstack.api.v2.UpdateMeta
+}
+var file_metalstack_api_v2_project_member_proto_depIdxs = []int32{
+ 14, // 0: metalstack.api.v2.ProjectMember.role:type_name -> metalstack.api.v2.ProjectRole
+ 15, // 1: metalstack.api.v2.ProjectMember.created_at:type_name -> google.protobuf.Timestamp
+ 16, // 2: metalstack.api.v2.ProjectMember.meta:type_name -> metalstack.api.v2.Meta
+ 14, // 3: metalstack.api.v2.ProjectMemberQuery.role:type_name -> metalstack.api.v2.ProjectRole
+ 1, // 4: metalstack.api.v2.ProjectMemberServiceListRequest.query:type_name -> metalstack.api.v2.ProjectMemberQuery
+ 14, // 5: metalstack.api.v2.ProjectMemberServiceCreateRequest.role:type_name -> metalstack.api.v2.ProjectRole
+ 14, // 6: metalstack.api.v2.ProjectMemberServiceUpdateRequest.role:type_name -> metalstack.api.v2.ProjectRole
+ 17, // 7: metalstack.api.v2.ProjectMemberServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 0, // 8: metalstack.api.v2.ProjectMemberServiceListResponse.members:type_name -> metalstack.api.v2.ProjectMember
+ 0, // 9: metalstack.api.v2.ProjectMemberServiceGetResponse.member:type_name -> metalstack.api.v2.ProjectMember
+ 0, // 10: metalstack.api.v2.ProjectMemberServiceCreateResponse.member:type_name -> metalstack.api.v2.ProjectMember
+ 0, // 11: metalstack.api.v2.ProjectMemberServiceDeleteResponse.member:type_name -> metalstack.api.v2.ProjectMember
+ 0, // 12: metalstack.api.v2.ProjectMemberServiceUpdateResponse.member:type_name -> metalstack.api.v2.ProjectMember
+ 0, // 13: metalstack.api.v2.ProjectMemberServiceLeaveResponse.member:type_name -> metalstack.api.v2.ProjectMember
+ 2, // 14: metalstack.api.v2.ProjectMemberService.List:input_type -> metalstack.api.v2.ProjectMemberServiceListRequest
+ 3, // 15: metalstack.api.v2.ProjectMemberService.Get:input_type -> metalstack.api.v2.ProjectMemberServiceGetRequest
+ 4, // 16: metalstack.api.v2.ProjectMemberService.Create:input_type -> metalstack.api.v2.ProjectMemberServiceCreateRequest
+ 6, // 17: metalstack.api.v2.ProjectMemberService.Delete:input_type -> metalstack.api.v2.ProjectMemberServiceDeleteRequest
+ 5, // 18: metalstack.api.v2.ProjectMemberService.Update:input_type -> metalstack.api.v2.ProjectMemberServiceUpdateRequest
+ 12, // 19: metalstack.api.v2.ProjectMemberService.Leave:input_type -> metalstack.api.v2.ProjectMemberServiceLeaveRequest
+ 7, // 20: metalstack.api.v2.ProjectMemberService.List:output_type -> metalstack.api.v2.ProjectMemberServiceListResponse
+ 8, // 21: metalstack.api.v2.ProjectMemberService.Get:output_type -> metalstack.api.v2.ProjectMemberServiceGetResponse
+ 9, // 22: metalstack.api.v2.ProjectMemberService.Create:output_type -> metalstack.api.v2.ProjectMemberServiceCreateResponse
+ 10, // 23: metalstack.api.v2.ProjectMemberService.Delete:output_type -> metalstack.api.v2.ProjectMemberServiceDeleteResponse
+ 11, // 24: metalstack.api.v2.ProjectMemberService.Update:output_type -> metalstack.api.v2.ProjectMemberServiceUpdateResponse
+ 13, // 25: metalstack.api.v2.ProjectMemberService.Leave:output_type -> metalstack.api.v2.ProjectMemberServiceLeaveResponse
+ 20, // [20:26] is the sub-list for method output_type
+ 14, // [14:20] is the sub-list for method input_type
+ 14, // [14:14] is the sub-list for extension type_name
+ 14, // [14:14] is the sub-list for extension extendee
+ 0, // [0:14] is the sub-list for field type_name
+}
+
+func init() { file_metalstack_api_v2_project_member_proto_init() }
+func file_metalstack_api_v2_project_member_proto_init() {
+ if File_metalstack_api_v2_project_member_proto != nil {
+ return
+ }
+ file_metalstack_api_v2_common_proto_init()
+ file_metalstack_api_v2_predefined_rules_proto_init()
+ file_metalstack_api_v2_project_member_proto_msgTypes[1].OneofWrappers = []any{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_project_member_proto_rawDesc), len(file_metalstack_api_v2_project_member_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 14,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_metalstack_api_v2_project_member_proto_goTypes,
+ DependencyIndexes: file_metalstack_api_v2_project_member_proto_depIdxs,
+ MessageInfos: file_metalstack_api_v2_project_member_proto_msgTypes,
+ }.Build()
+ File_metalstack_api_v2_project_member_proto = out.File
+ file_metalstack_api_v2_project_member_proto_goTypes = nil
+ file_metalstack_api_v2_project_member_proto_depIdxs = nil
+}
diff --git a/go/metalstack/api/v2/tenant.pb.go b/go/metalstack/api/v2/tenant.pb.go
index 8222e07b..45d056ce 100644
--- a/go/metalstack/api/v2/tenant.pb.go
+++ b/go/metalstack/api/v2/tenant.pb.go
@@ -123,88 +123,6 @@ func (x *Tenant) GetCreatedBy() string {
return ""
}
-// TenantMember defines a user that participates in a tenant.
-type TenantMember struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Id is the user id of the member.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // Role is the role of the member.
- Role TenantRole `protobuf:"varint,2,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole" json:"role,omitempty"`
- // Projects in which a user is a direct member.
- Projects []string `protobuf:"bytes,3,rep,name=projects,proto3" json:"projects,omitempty"`
- // CreatedAt the date when the member was added to the tenant.
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- // Meta for this tenant member.
- Meta *Meta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantMember) Reset() {
- *x = TenantMember{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantMember) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantMember) ProtoMessage() {}
-
-func (x *TenantMember) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[1]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantMember.ProtoReflect.Descriptor instead.
-func (*TenantMember) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *TenantMember) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *TenantMember) GetRole() TenantRole {
- if x != nil {
- return x.Role
- }
- return TenantRole_TENANT_ROLE_UNSPECIFIED
-}
-
-func (x *TenantMember) GetProjects() []string {
- if x != nil {
- return x.Projects
- }
- return nil
-}
-
-func (x *TenantMember) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *TenantMember) GetMeta() *Meta {
- if x != nil {
- return x.Meta
- }
- return nil
-}
-
// TenantInvite defines invite to tenant.
type TenantInvite struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -232,7 +150,7 @@ type TenantInvite struct {
func (x *TenantInvite) Reset() {
*x = TenantInvite{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[2]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -244,7 +162,7 @@ func (x *TenantInvite) String() string {
func (*TenantInvite) ProtoMessage() {}
func (x *TenantInvite) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[2]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -257,7 +175,7 @@ func (x *TenantInvite) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantInvite.ProtoReflect.Descriptor instead.
func (*TenantInvite) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{2}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{1}
}
func (x *TenantInvite) GetSecret() string {
@@ -334,7 +252,7 @@ type TenantServiceListRequest struct {
func (x *TenantServiceListRequest) Reset() {
*x = TenantServiceListRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[3]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -346,7 +264,7 @@ func (x *TenantServiceListRequest) String() string {
func (*TenantServiceListRequest) ProtoMessage() {}
func (x *TenantServiceListRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[3]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -359,7 +277,7 @@ func (x *TenantServiceListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceListRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceListRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{3}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{2}
}
func (x *TenantServiceListRequest) GetQuery() *TenantQuery {
@@ -386,7 +304,7 @@ type TenantQuery struct {
func (x *TenantQuery) Reset() {
*x = TenantQuery{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[4]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -398,7 +316,7 @@ func (x *TenantQuery) String() string {
func (*TenantQuery) ProtoMessage() {}
func (x *TenantQuery) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[4]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -411,7 +329,7 @@ func (x *TenantQuery) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantQuery.ProtoReflect.Descriptor instead.
func (*TenantQuery) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{4}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{3}
}
func (x *TenantQuery) GetLogin() string {
@@ -453,7 +371,7 @@ type TenantServiceGetRequest struct {
func (x *TenantServiceGetRequest) Reset() {
*x = TenantServiceGetRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[5]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -465,7 +383,7 @@ func (x *TenantServiceGetRequest) String() string {
func (*TenantServiceGetRequest) ProtoMessage() {}
func (x *TenantServiceGetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[5]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -478,7 +396,7 @@ func (x *TenantServiceGetRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceGetRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceGetRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{5}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{4}
}
func (x *TenantServiceGetRequest) GetLogin() string {
@@ -507,7 +425,7 @@ type TenantServiceCreateRequest struct {
func (x *TenantServiceCreateRequest) Reset() {
*x = TenantServiceCreateRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[6]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -519,7 +437,7 @@ func (x *TenantServiceCreateRequest) String() string {
func (*TenantServiceCreateRequest) ProtoMessage() {}
func (x *TenantServiceCreateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[6]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -532,7 +450,7 @@ func (x *TenantServiceCreateRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceCreateRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceCreateRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{6}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{5}
}
func (x *TenantServiceCreateRequest) GetName() string {
@@ -593,7 +511,7 @@ type TenantServiceUpdateRequest struct {
func (x *TenantServiceUpdateRequest) Reset() {
*x = TenantServiceUpdateRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[7]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -605,7 +523,7 @@ func (x *TenantServiceUpdateRequest) String() string {
func (*TenantServiceUpdateRequest) ProtoMessage() {}
func (x *TenantServiceUpdateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[7]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -618,7 +536,7 @@ func (x *TenantServiceUpdateRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceUpdateRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceUpdateRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{7}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{6}
}
func (x *TenantServiceUpdateRequest) GetLogin() string {
@@ -681,7 +599,7 @@ type TenantServiceDeleteRequest struct {
func (x *TenantServiceDeleteRequest) Reset() {
*x = TenantServiceDeleteRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[8]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -693,7 +611,7 @@ func (x *TenantServiceDeleteRequest) String() string {
func (*TenantServiceDeleteRequest) ProtoMessage() {}
func (x *TenantServiceDeleteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[8]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -706,7 +624,7 @@ func (x *TenantServiceDeleteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceDeleteRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceDeleteRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{8}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{7}
}
func (x *TenantServiceDeleteRequest) GetLogin() string {
@@ -720,16 +638,14 @@ func (x *TenantServiceDeleteRequest) GetLogin() string {
type TenantServiceGetResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Tenant is the tenant.
- Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
- // TenantMembers of this tenant.
- TenantMembers []*TenantMember `protobuf:"bytes,2,rep,name=tenant_members,json=tenantMembers,proto3" json:"tenant_members,omitempty"`
+ Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *TenantServiceGetResponse) Reset() {
*x = TenantServiceGetResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[9]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -741,7 +657,7 @@ func (x *TenantServiceGetResponse) String() string {
func (*TenantServiceGetResponse) ProtoMessage() {}
func (x *TenantServiceGetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[9]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -754,7 +670,7 @@ func (x *TenantServiceGetResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceGetResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceGetResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{9}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{8}
}
func (x *TenantServiceGetResponse) GetTenant() *Tenant {
@@ -764,13 +680,6 @@ func (x *TenantServiceGetResponse) GetTenant() *Tenant {
return nil
}
-func (x *TenantServiceGetResponse) GetTenantMembers() []*TenantMember {
- if x != nil {
- return x.TenantMembers
- }
- return nil
-}
-
// TenantServiceListResponse is the response payload of the tenant list request.
type TenantServiceListResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -782,7 +691,7 @@ type TenantServiceListResponse struct {
func (x *TenantServiceListResponse) Reset() {
*x = TenantServiceListResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[10]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -794,7 +703,7 @@ func (x *TenantServiceListResponse) String() string {
func (*TenantServiceListResponse) ProtoMessage() {}
func (x *TenantServiceListResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[10]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -807,7 +716,7 @@ func (x *TenantServiceListResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceListResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceListResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{10}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{9}
}
func (x *TenantServiceListResponse) GetTenants() []*Tenant {
@@ -828,7 +737,7 @@ type TenantServiceCreateResponse struct {
func (x *TenantServiceCreateResponse) Reset() {
*x = TenantServiceCreateResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[11]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -840,7 +749,7 @@ func (x *TenantServiceCreateResponse) String() string {
func (*TenantServiceCreateResponse) ProtoMessage() {}
func (x *TenantServiceCreateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[11]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -853,7 +762,7 @@ func (x *TenantServiceCreateResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceCreateResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceCreateResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{11}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{10}
}
func (x *TenantServiceCreateResponse) GetTenant() *Tenant {
@@ -874,7 +783,7 @@ type TenantServiceUpdateResponse struct {
func (x *TenantServiceUpdateResponse) Reset() {
*x = TenantServiceUpdateResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[12]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -886,7 +795,7 @@ func (x *TenantServiceUpdateResponse) String() string {
func (*TenantServiceUpdateResponse) ProtoMessage() {}
func (x *TenantServiceUpdateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[12]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -899,7 +808,7 @@ func (x *TenantServiceUpdateResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceUpdateResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceUpdateResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{12}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{11}
}
func (x *TenantServiceUpdateResponse) GetTenant() *Tenant {
@@ -920,7 +829,7 @@ type TenantServiceDeleteResponse struct {
func (x *TenantServiceDeleteResponse) Reset() {
*x = TenantServiceDeleteResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[13]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -932,7 +841,7 @@ func (x *TenantServiceDeleteResponse) String() string {
func (*TenantServiceDeleteResponse) ProtoMessage() {}
func (x *TenantServiceDeleteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[13]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -945,7 +854,7 @@ func (x *TenantServiceDeleteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceDeleteResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceDeleteResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{13}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{12}
}
func (x *TenantServiceDeleteResponse) GetTenant() *Tenant {
@@ -968,7 +877,7 @@ type TenantServiceInviteRequest struct {
func (x *TenantServiceInviteRequest) Reset() {
*x = TenantServiceInviteRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[14]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -980,7 +889,7 @@ func (x *TenantServiceInviteRequest) String() string {
func (*TenantServiceInviteRequest) ProtoMessage() {}
func (x *TenantServiceInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[14]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -993,7 +902,7 @@ func (x *TenantServiceInviteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInviteRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{14}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{13}
}
func (x *TenantServiceInviteRequest) GetLogin() string {
@@ -1021,7 +930,7 @@ type TenantServiceInviteResponse struct {
func (x *TenantServiceInviteResponse) Reset() {
*x = TenantServiceInviteResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1033,7 +942,7 @@ func (x *TenantServiceInviteResponse) String() string {
func (*TenantServiceInviteResponse) ProtoMessage() {}
func (x *TenantServiceInviteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1046,7 +955,7 @@ func (x *TenantServiceInviteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInviteResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{15}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{14}
}
func (x *TenantServiceInviteResponse) GetInvite() *TenantInvite {
@@ -1067,7 +976,7 @@ type TenantServiceInvitesListRequest struct {
func (x *TenantServiceInvitesListRequest) Reset() {
*x = TenantServiceInvitesListRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1079,7 +988,7 @@ func (x *TenantServiceInvitesListRequest) String() string {
func (*TenantServiceInvitesListRequest) ProtoMessage() {}
func (x *TenantServiceInvitesListRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1092,7 +1001,7 @@ func (x *TenantServiceInvitesListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInvitesListRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceInvitesListRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{16}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{15}
}
func (x *TenantServiceInvitesListRequest) GetLogin() string {
@@ -1113,7 +1022,7 @@ type TenantServiceInvitesListResponse struct {
func (x *TenantServiceInvitesListResponse) Reset() {
*x = TenantServiceInvitesListResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[17]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1125,7 +1034,7 @@ func (x *TenantServiceInvitesListResponse) String() string {
func (*TenantServiceInvitesListResponse) ProtoMessage() {}
func (x *TenantServiceInvitesListResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[17]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1138,7 +1047,7 @@ func (x *TenantServiceInvitesListResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInvitesListResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceInvitesListResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{17}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{16}
}
func (x *TenantServiceInvitesListResponse) GetInvites() []*TenantInvite {
@@ -1159,7 +1068,7 @@ type TenantServiceInviteGetRequest struct {
func (x *TenantServiceInviteGetRequest) Reset() {
*x = TenantServiceInviteGetRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[18]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1171,7 +1080,7 @@ func (x *TenantServiceInviteGetRequest) String() string {
func (*TenantServiceInviteGetRequest) ProtoMessage() {}
func (x *TenantServiceInviteGetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[18]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1184,7 +1093,7 @@ func (x *TenantServiceInviteGetRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInviteGetRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteGetRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{18}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{17}
}
func (x *TenantServiceInviteGetRequest) GetSecret() string {
@@ -1205,7 +1114,7 @@ type TenantServiceInviteGetResponse struct {
func (x *TenantServiceInviteGetResponse) Reset() {
*x = TenantServiceInviteGetResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[19]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1217,7 +1126,7 @@ func (x *TenantServiceInviteGetResponse) String() string {
func (*TenantServiceInviteGetResponse) ProtoMessage() {}
func (x *TenantServiceInviteGetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[19]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[18]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1230,7 +1139,7 @@ func (x *TenantServiceInviteGetResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInviteGetResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteGetResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{19}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{18}
}
func (x *TenantServiceInviteGetResponse) GetInvite() *TenantInvite {
@@ -1240,190 +1149,6 @@ func (x *TenantServiceInviteGetResponse) GetInvite() *TenantInvite {
return nil
}
-// TenantServiceRemoveMemberRequest is used to remove a member from a tenant.
-type TenantServiceRemoveMemberRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Login of the tenant.
- Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
- // Member is the id of the member to remove from this tenant.
- Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceRemoveMemberRequest) Reset() {
- *x = TenantServiceRemoveMemberRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceRemoveMemberRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceRemoveMemberRequest) ProtoMessage() {}
-
-func (x *TenantServiceRemoveMemberRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceRemoveMemberRequest.ProtoReflect.Descriptor instead.
-func (*TenantServiceRemoveMemberRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *TenantServiceRemoveMemberRequest) GetLogin() string {
- if x != nil {
- return x.Login
- }
- return ""
-}
-
-func (x *TenantServiceRemoveMemberRequest) GetMember() string {
- if x != nil {
- return x.Member
- }
- return ""
-}
-
-// TenantServiceLeaveTenantRequest is used to leave a tenant.
-type TenantServiceLeaveRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Login of the tenant.
- Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceLeaveRequest) Reset() {
- *x = TenantServiceLeaveRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceLeaveRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceLeaveRequest) ProtoMessage() {}
-
-func (x *TenantServiceLeaveRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceLeaveRequest.ProtoReflect.Descriptor instead.
-func (*TenantServiceLeaveRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *TenantServiceLeaveRequest) GetLogin() string {
- if x != nil {
- return x.Login
- }
- return ""
-}
-
-// TenantServiceLeaveTenantResponse is the response payload to a leave tenant request.
-type TenantServiceLeaveResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceLeaveResponse) Reset() {
- *x = TenantServiceLeaveResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceLeaveResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceLeaveResponse) ProtoMessage() {}
-
-func (x *TenantServiceLeaveResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceLeaveResponse.ProtoReflect.Descriptor instead.
-func (*TenantServiceLeaveResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{22}
-}
-
-// TenantServiceRemoveMemberResponse is the response payload to a remove member request.
-type TenantServiceRemoveMemberResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // TenantMember is the removed tenant member.
- TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceRemoveMemberResponse) Reset() {
- *x = TenantServiceRemoveMemberResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceRemoveMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceRemoveMemberResponse) ProtoMessage() {}
-
-func (x *TenantServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[23]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceRemoveMemberResponse.ProtoReflect.Descriptor instead.
-func (*TenantServiceRemoveMemberResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *TenantServiceRemoveMemberResponse) GetTenantMember() *TenantMember {
- if x != nil {
- return x.TenantMember
- }
- return nil
-}
-
// TenantServiceInviteAcceptRequest is the request payload to a accept invite request.
type TenantServiceInviteAcceptRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -1435,7 +1160,7 @@ type TenantServiceInviteAcceptRequest struct {
func (x *TenantServiceInviteAcceptRequest) Reset() {
*x = TenantServiceInviteAcceptRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[24]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1447,7 +1172,7 @@ func (x *TenantServiceInviteAcceptRequest) String() string {
func (*TenantServiceInviteAcceptRequest) ProtoMessage() {}
func (x *TenantServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[24]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[19]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1460,7 +1185,7 @@ func (x *TenantServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInviteAcceptRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteAcceptRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{24}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{19}
}
func (x *TenantServiceInviteAcceptRequest) GetSecret() string {
@@ -1483,7 +1208,7 @@ type TenantServiceInviteAcceptResponse struct {
func (x *TenantServiceInviteAcceptResponse) Reset() {
*x = TenantServiceInviteAcceptResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[25]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1495,7 +1220,7 @@ func (x *TenantServiceInviteAcceptResponse) String() string {
func (*TenantServiceInviteAcceptResponse) ProtoMessage() {}
func (x *TenantServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[25]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1508,7 +1233,7 @@ func (x *TenantServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use TenantServiceInviteAcceptResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteAcceptResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{25}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{20}
}
func (x *TenantServiceInviteAcceptResponse) GetTenant() string {
@@ -1538,7 +1263,7 @@ type TenantServiceInviteDeleteRequest struct {
func (x *TenantServiceInviteDeleteRequest) Reset() {
*x = TenantServiceInviteDeleteRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[26]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1550,7 +1275,7 @@ func (x *TenantServiceInviteDeleteRequest) String() string {
func (*TenantServiceInviteDeleteRequest) ProtoMessage() {}
func (x *TenantServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[26]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1563,7 +1288,7 @@ func (x *TenantServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TenantServiceInviteDeleteRequest.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteDeleteRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{26}
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{21}
}
func (x *TenantServiceInviteDeleteRequest) GetLogin() string {
@@ -1589,7 +1314,7 @@ type TenantServiceInviteDeleteResponse struct {
func (x *TenantServiceInviteDeleteResponse) Reset() {
*x = TenantServiceInviteDeleteResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[27]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1601,7 +1326,7 @@ func (x *TenantServiceInviteDeleteResponse) String() string {
func (*TenantServiceInviteDeleteResponse) ProtoMessage() {}
func (x *TenantServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[27]
+ mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1614,227 +1339,7 @@ func (x *TenantServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use TenantServiceInviteDeleteResponse.ProtoReflect.Descriptor instead.
func (*TenantServiceInviteDeleteResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{27}
-}
-
-// TenantServiceAddMemberRequest is the request payload for adding a member to a tenant.
-type TenantServiceAddMemberRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Login of the tenant to which the member will be added.
- Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
- // Login of the member to add.
- Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
- // Role to assign to the new member.
- Role TenantRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole" json:"role,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceAddMemberRequest) Reset() {
- *x = TenantServiceAddMemberRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceAddMemberRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceAddMemberRequest) ProtoMessage() {}
-
-func (x *TenantServiceAddMemberRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceAddMemberRequest.ProtoReflect.Descriptor instead.
-func (*TenantServiceAddMemberRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *TenantServiceAddMemberRequest) GetLogin() string {
- if x != nil {
- return x.Login
- }
- return ""
-}
-
-func (x *TenantServiceAddMemberRequest) GetMember() string {
- if x != nil {
- return x.Member
- }
- return ""
-}
-
-func (x *TenantServiceAddMemberRequest) GetRole() TenantRole {
- if x != nil {
- return x.Role
- }
- return TenantRole_TENANT_ROLE_UNSPECIFIED
-}
-
-// TenantServiceAddMemberResponse is the response payload for the add member request.
-type TenantServiceAddMemberResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // TenantMember is the added tenant member.
- TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceAddMemberResponse) Reset() {
- *x = TenantServiceAddMemberResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[29]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceAddMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceAddMemberResponse) ProtoMessage() {}
-
-func (x *TenantServiceAddMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[29]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceAddMemberResponse.ProtoReflect.Descriptor instead.
-func (*TenantServiceAddMemberResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *TenantServiceAddMemberResponse) GetTenantMember() *TenantMember {
- if x != nil {
- return x.TenantMember
- }
- return nil
-}
-
-// TenantServiceUpdateMemberRequest is used to update a member from a tenant.
-type TenantServiceUpdateMemberRequest struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Login of the tenant.
- Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
- // Member is the id of the member to update in this tenant.
- Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
- // Role of this user in this tenant.
- Role TenantRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole" json:"role,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceUpdateMemberRequest) Reset() {
- *x = TenantServiceUpdateMemberRequest{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[30]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceUpdateMemberRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceUpdateMemberRequest) ProtoMessage() {}
-
-func (x *TenantServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[30]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceUpdateMemberRequest.ProtoReflect.Descriptor instead.
-func (*TenantServiceUpdateMemberRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *TenantServiceUpdateMemberRequest) GetLogin() string {
- if x != nil {
- return x.Login
- }
- return ""
-}
-
-func (x *TenantServiceUpdateMemberRequest) GetMember() string {
- if x != nil {
- return x.Member
- }
- return ""
-}
-
-func (x *TenantServiceUpdateMemberRequest) GetRole() TenantRole {
- if x != nil {
- return x.Role
- }
- return TenantRole_TENANT_ROLE_UNSPECIFIED
-}
-
-// TenantServiceUpdateMemberResponse is the response payload to a update member request.
-type TenantServiceUpdateMemberResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // TenantMember is the updated membership.
- TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantServiceUpdateMemberResponse) Reset() {
- *x = TenantServiceUpdateMemberResponse{}
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[31]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantServiceUpdateMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantServiceUpdateMemberResponse) ProtoMessage() {}
-
-func (x *TenantServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_tenant_proto_msgTypes[31]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantServiceUpdateMemberResponse.ProtoReflect.Descriptor instead.
-func (*TenantServiceUpdateMemberResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *TenantServiceUpdateMemberResponse) GetTenantMember() *TenantMember {
- if x != nil {
- return x.TenantMember
- }
- return nil
+ return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{22}
}
var File_metalstack_api_v2_tenant_proto protoreflect.FileDescriptor
@@ -1851,14 +1356,7 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" +
"\n" +
"avatar_url\x18\x06 \x01(\tB\v\xbaH\br\x06à³®\xb1\x02\x01R\tavatarUrl\x12\x1d\n" +
"\n" +
- "created_by\x18\a \x01(\tR\tcreatedBy\"\xec\x01\n" +
- "\fTenantMember\x12\x1b\n" +
- "\x02id\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x02id\x12;\n" +
- "\x04role\x18\x02 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n" +
- "\bprojects\x18\x03 \x03(\tR\bprojects\x129\n" +
- "\n" +
- "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n" +
- "\x04meta\x18\x05 \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\"\xfb\x02\n" +
+ "created_by\x18\a \x01(\tR\tcreatedBy\"\xfb\x02\n" +
"\fTenantInvite\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n" +
"\rtarget_tenant\x18\x02 \x01(\tR\ftargetTenant\x12;\n" +
@@ -1909,10 +1407,9 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" +
"\v_avatar_urlB\t\n" +
"\a_labels\"?\n" +
"\x1aTenantServiceDeleteRequest\x12!\n" +
- "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\"\x95\x01\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\"M\n" +
"\x18TenantServiceGetResponse\x121\n" +
- "\x06tenant\x18\x01 \x01(\v2\x19.metalstack.api.v2.TenantR\x06tenant\x12F\n" +
- "\x0etenant_members\x18\x02 \x03(\v2\x1f.metalstack.api.v2.TenantMemberR\rtenantMembers\"P\n" +
+ "\x06tenant\x18\x01 \x01(\v2\x19.metalstack.api.v2.TenantR\x06tenant\"P\n" +
"\x19TenantServiceListResponse\x123\n" +
"\atenants\x18\x01 \x03(\v2\x19.metalstack.api.v2.TenantR\atenants\"P\n" +
"\x1bTenantServiceCreateResponse\x121\n" +
@@ -1933,15 +1430,7 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" +
"\x1dTenantServiceInviteGetRequest\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\"Y\n" +
"\x1eTenantServiceInviteGetResponse\x127\n" +
- "\x06invite\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantInviteR\x06invite\"]\n" +
- " TenantServiceRemoveMemberRequest\x12!\n" +
- "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n" +
- "\x06member\x18\x02 \x01(\tR\x06member\">\n" +
- "\x19TenantServiceLeaveRequest\x12!\n" +
- "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\"\x1c\n" +
- "\x1aTenantServiceLeaveResponse\"i\n" +
- "!TenantServiceRemoveMemberResponse\x12D\n" +
- "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember\":\n" +
+ "\x06invite\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantInviteR\x06invite\":\n" +
" TenantServiceInviteAcceptRequest\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n" +
"!TenantServiceInviteAcceptResponse\x12\x16\n" +
@@ -1951,19 +1440,7 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" +
" TenantServiceInviteDeleteRequest\x12!\n" +
"\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n" +
"\x06secret\x18\x02 \x01(\tR\x06secret\"#\n" +
- "!TenantServiceInviteDeleteResponse\"\xa4\x01\n" +
- "\x1dTenantServiceAddMemberRequest\x12!\n" +
- "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n" +
- "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" +
- "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n" +
- "\x1eTenantServiceAddMemberResponse\x12D\n" +
- "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember\"\xa7\x01\n" +
- " TenantServiceUpdateMemberRequest\x12!\n" +
- "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n" +
- "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" +
- "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n" +
- "!TenantServiceUpdateMemberResponse\x12D\n" +
- "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember2\xc5\r\n" +
+ "!TenantServiceInviteDeleteResponse2\xc8\t\n" +
"\rTenantService\x12q\n" +
"\x06Create\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12k\n" +
"\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12l\n" +
@@ -1971,12 +1448,7 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" +
"\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n" +
"\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n" +
"\x06Delete\x12-.metalstack.api.v2.TenantServiceDeleteRequest\x1a..metalstack.api.v2.TenantServiceDeleteResponse\"\n" +
- "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12o\n" +
- "\x05Leave\x12,.metalstack.api.v2.TenantServiceLeaveRequest\x1a-.metalstack.api.v2.TenantServiceLeaveResponse\"\t\xc2\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12|\n" +
- "\tAddMember\x120.metalstack.api.v2.TenantServiceAddMemberRequest\x1a1.metalstack.api.v2.TenantServiceAddMemberResponse\"\n" +
- "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x84\x01\n" +
- "\fRemoveMember\x123.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a4.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n" +
- "\fUpdateMember\x123.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a4.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12r\n" +
+ "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12r\n" +
"\x06Invite\x12-.metalstack.api.v2.TenantServiceInviteRequest\x1a..metalstack.api.v2.TenantServiceInviteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n" +
"\fInviteAccept\x123.metalstack.api.v2.TenantServiceInviteAcceptRequest\x1a4.metalstack.api.v2.TenantServiceInviteAcceptResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x84\x01\n" +
"\fInviteDelete\x123.metalstack.api.v2.TenantServiceInviteDeleteRequest\x1a4.metalstack.api.v2.TenantServiceInviteDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x81\x01\n" +
@@ -1996,110 +1468,84 @@ func file_metalstack_api_v2_tenant_proto_rawDescGZIP() []byte {
return file_metalstack_api_v2_tenant_proto_rawDescData
}
-var file_metalstack_api_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
+var file_metalstack_api_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_metalstack_api_v2_tenant_proto_goTypes = []any{
(*Tenant)(nil), // 0: metalstack.api.v2.Tenant
- (*TenantMember)(nil), // 1: metalstack.api.v2.TenantMember
- (*TenantInvite)(nil), // 2: metalstack.api.v2.TenantInvite
- (*TenantServiceListRequest)(nil), // 3: metalstack.api.v2.TenantServiceListRequest
- (*TenantQuery)(nil), // 4: metalstack.api.v2.TenantQuery
- (*TenantServiceGetRequest)(nil), // 5: metalstack.api.v2.TenantServiceGetRequest
- (*TenantServiceCreateRequest)(nil), // 6: metalstack.api.v2.TenantServiceCreateRequest
- (*TenantServiceUpdateRequest)(nil), // 7: metalstack.api.v2.TenantServiceUpdateRequest
- (*TenantServiceDeleteRequest)(nil), // 8: metalstack.api.v2.TenantServiceDeleteRequest
- (*TenantServiceGetResponse)(nil), // 9: metalstack.api.v2.TenantServiceGetResponse
- (*TenantServiceListResponse)(nil), // 10: metalstack.api.v2.TenantServiceListResponse
- (*TenantServiceCreateResponse)(nil), // 11: metalstack.api.v2.TenantServiceCreateResponse
- (*TenantServiceUpdateResponse)(nil), // 12: metalstack.api.v2.TenantServiceUpdateResponse
- (*TenantServiceDeleteResponse)(nil), // 13: metalstack.api.v2.TenantServiceDeleteResponse
- (*TenantServiceInviteRequest)(nil), // 14: metalstack.api.v2.TenantServiceInviteRequest
- (*TenantServiceInviteResponse)(nil), // 15: metalstack.api.v2.TenantServiceInviteResponse
- (*TenantServiceInvitesListRequest)(nil), // 16: metalstack.api.v2.TenantServiceInvitesListRequest
- (*TenantServiceInvitesListResponse)(nil), // 17: metalstack.api.v2.TenantServiceInvitesListResponse
- (*TenantServiceInviteGetRequest)(nil), // 18: metalstack.api.v2.TenantServiceInviteGetRequest
- (*TenantServiceInviteGetResponse)(nil), // 19: metalstack.api.v2.TenantServiceInviteGetResponse
- (*TenantServiceRemoveMemberRequest)(nil), // 20: metalstack.api.v2.TenantServiceRemoveMemberRequest
- (*TenantServiceLeaveRequest)(nil), // 21: metalstack.api.v2.TenantServiceLeaveRequest
- (*TenantServiceLeaveResponse)(nil), // 22: metalstack.api.v2.TenantServiceLeaveResponse
- (*TenantServiceRemoveMemberResponse)(nil), // 23: metalstack.api.v2.TenantServiceRemoveMemberResponse
- (*TenantServiceInviteAcceptRequest)(nil), // 24: metalstack.api.v2.TenantServiceInviteAcceptRequest
- (*TenantServiceInviteAcceptResponse)(nil), // 25: metalstack.api.v2.TenantServiceInviteAcceptResponse
- (*TenantServiceInviteDeleteRequest)(nil), // 26: metalstack.api.v2.TenantServiceInviteDeleteRequest
- (*TenantServiceInviteDeleteResponse)(nil), // 27: metalstack.api.v2.TenantServiceInviteDeleteResponse
- (*TenantServiceAddMemberRequest)(nil), // 28: metalstack.api.v2.TenantServiceAddMemberRequest
- (*TenantServiceAddMemberResponse)(nil), // 29: metalstack.api.v2.TenantServiceAddMemberResponse
- (*TenantServiceUpdateMemberRequest)(nil), // 30: metalstack.api.v2.TenantServiceUpdateMemberRequest
- (*TenantServiceUpdateMemberResponse)(nil), // 31: metalstack.api.v2.TenantServiceUpdateMemberResponse
- (*Meta)(nil), // 32: metalstack.api.v2.Meta
- (TenantRole)(0), // 33: metalstack.api.v2.TenantRole
- (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp
- (*Labels)(nil), // 35: metalstack.api.v2.Labels
- (*Paging)(nil), // 36: metalstack.api.v2.Paging
- (*UpdateMeta)(nil), // 37: metalstack.api.v2.UpdateMeta
- (*UpdateLabels)(nil), // 38: metalstack.api.v2.UpdateLabels
+ (*TenantInvite)(nil), // 1: metalstack.api.v2.TenantInvite
+ (*TenantServiceListRequest)(nil), // 2: metalstack.api.v2.TenantServiceListRequest
+ (*TenantQuery)(nil), // 3: metalstack.api.v2.TenantQuery
+ (*TenantServiceGetRequest)(nil), // 4: metalstack.api.v2.TenantServiceGetRequest
+ (*TenantServiceCreateRequest)(nil), // 5: metalstack.api.v2.TenantServiceCreateRequest
+ (*TenantServiceUpdateRequest)(nil), // 6: metalstack.api.v2.TenantServiceUpdateRequest
+ (*TenantServiceDeleteRequest)(nil), // 7: metalstack.api.v2.TenantServiceDeleteRequest
+ (*TenantServiceGetResponse)(nil), // 8: metalstack.api.v2.TenantServiceGetResponse
+ (*TenantServiceListResponse)(nil), // 9: metalstack.api.v2.TenantServiceListResponse
+ (*TenantServiceCreateResponse)(nil), // 10: metalstack.api.v2.TenantServiceCreateResponse
+ (*TenantServiceUpdateResponse)(nil), // 11: metalstack.api.v2.TenantServiceUpdateResponse
+ (*TenantServiceDeleteResponse)(nil), // 12: metalstack.api.v2.TenantServiceDeleteResponse
+ (*TenantServiceInviteRequest)(nil), // 13: metalstack.api.v2.TenantServiceInviteRequest
+ (*TenantServiceInviteResponse)(nil), // 14: metalstack.api.v2.TenantServiceInviteResponse
+ (*TenantServiceInvitesListRequest)(nil), // 15: metalstack.api.v2.TenantServiceInvitesListRequest
+ (*TenantServiceInvitesListResponse)(nil), // 16: metalstack.api.v2.TenantServiceInvitesListResponse
+ (*TenantServiceInviteGetRequest)(nil), // 17: metalstack.api.v2.TenantServiceInviteGetRequest
+ (*TenantServiceInviteGetResponse)(nil), // 18: metalstack.api.v2.TenantServiceInviteGetResponse
+ (*TenantServiceInviteAcceptRequest)(nil), // 19: metalstack.api.v2.TenantServiceInviteAcceptRequest
+ (*TenantServiceInviteAcceptResponse)(nil), // 20: metalstack.api.v2.TenantServiceInviteAcceptResponse
+ (*TenantServiceInviteDeleteRequest)(nil), // 21: metalstack.api.v2.TenantServiceInviteDeleteRequest
+ (*TenantServiceInviteDeleteResponse)(nil), // 22: metalstack.api.v2.TenantServiceInviteDeleteResponse
+ (*Meta)(nil), // 23: metalstack.api.v2.Meta
+ (TenantRole)(0), // 24: metalstack.api.v2.TenantRole
+ (*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp
+ (*Labels)(nil), // 26: metalstack.api.v2.Labels
+ (*Paging)(nil), // 27: metalstack.api.v2.Paging
+ (*UpdateMeta)(nil), // 28: metalstack.api.v2.UpdateMeta
+ (*UpdateLabels)(nil), // 29: metalstack.api.v2.UpdateLabels
}
var file_metalstack_api_v2_tenant_proto_depIdxs = []int32{
- 32, // 0: metalstack.api.v2.Tenant.meta:type_name -> metalstack.api.v2.Meta
- 33, // 1: metalstack.api.v2.TenantMember.role:type_name -> metalstack.api.v2.TenantRole
- 34, // 2: metalstack.api.v2.TenantMember.created_at:type_name -> google.protobuf.Timestamp
- 32, // 3: metalstack.api.v2.TenantMember.meta:type_name -> metalstack.api.v2.Meta
- 33, // 4: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole
- 34, // 5: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp
- 34, // 6: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp
- 4, // 7: metalstack.api.v2.TenantServiceListRequest.query:type_name -> metalstack.api.v2.TenantQuery
- 35, // 8: metalstack.api.v2.TenantQuery.labels:type_name -> metalstack.api.v2.Labels
- 36, // 9: metalstack.api.v2.TenantQuery.paging:type_name -> metalstack.api.v2.Paging
- 35, // 10: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 37, // 11: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 38, // 12: metalstack.api.v2.TenantServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
- 0, // 13: metalstack.api.v2.TenantServiceGetResponse.tenant:type_name -> metalstack.api.v2.Tenant
- 1, // 14: metalstack.api.v2.TenantServiceGetResponse.tenant_members:type_name -> metalstack.api.v2.TenantMember
- 0, // 15: metalstack.api.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant
- 0, // 16: metalstack.api.v2.TenantServiceCreateResponse.tenant:type_name -> metalstack.api.v2.Tenant
- 0, // 17: metalstack.api.v2.TenantServiceUpdateResponse.tenant:type_name -> metalstack.api.v2.Tenant
- 0, // 18: metalstack.api.v2.TenantServiceDeleteResponse.tenant:type_name -> metalstack.api.v2.Tenant
- 33, // 19: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole
- 2, // 20: metalstack.api.v2.TenantServiceInviteResponse.invite:type_name -> metalstack.api.v2.TenantInvite
- 2, // 21: metalstack.api.v2.TenantServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.TenantInvite
- 2, // 22: metalstack.api.v2.TenantServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.TenantInvite
- 1, // 23: metalstack.api.v2.TenantServiceRemoveMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember
- 33, // 24: metalstack.api.v2.TenantServiceAddMemberRequest.role:type_name -> metalstack.api.v2.TenantRole
- 1, // 25: metalstack.api.v2.TenantServiceAddMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember
- 33, // 26: metalstack.api.v2.TenantServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.TenantRole
- 1, // 27: metalstack.api.v2.TenantServiceUpdateMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember
- 6, // 28: metalstack.api.v2.TenantService.Create:input_type -> metalstack.api.v2.TenantServiceCreateRequest
- 3, // 29: metalstack.api.v2.TenantService.List:input_type -> metalstack.api.v2.TenantServiceListRequest
- 5, // 30: metalstack.api.v2.TenantService.Get:input_type -> metalstack.api.v2.TenantServiceGetRequest
- 7, // 31: metalstack.api.v2.TenantService.Update:input_type -> metalstack.api.v2.TenantServiceUpdateRequest
- 8, // 32: metalstack.api.v2.TenantService.Delete:input_type -> metalstack.api.v2.TenantServiceDeleteRequest
- 21, // 33: metalstack.api.v2.TenantService.Leave:input_type -> metalstack.api.v2.TenantServiceLeaveRequest
- 28, // 34: metalstack.api.v2.TenantService.AddMember:input_type -> metalstack.api.v2.TenantServiceAddMemberRequest
- 20, // 35: metalstack.api.v2.TenantService.RemoveMember:input_type -> metalstack.api.v2.TenantServiceRemoveMemberRequest
- 30, // 36: metalstack.api.v2.TenantService.UpdateMember:input_type -> metalstack.api.v2.TenantServiceUpdateMemberRequest
- 14, // 37: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest
- 24, // 38: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest
- 26, // 39: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest
- 16, // 40: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest
- 18, // 41: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest
- 11, // 42: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse
- 10, // 43: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse
- 9, // 44: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse
- 12, // 45: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse
- 13, // 46: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse
- 22, // 47: metalstack.api.v2.TenantService.Leave:output_type -> metalstack.api.v2.TenantServiceLeaveResponse
- 29, // 48: metalstack.api.v2.TenantService.AddMember:output_type -> metalstack.api.v2.TenantServiceAddMemberResponse
- 23, // 49: metalstack.api.v2.TenantService.RemoveMember:output_type -> metalstack.api.v2.TenantServiceRemoveMemberResponse
- 31, // 50: metalstack.api.v2.TenantService.UpdateMember:output_type -> metalstack.api.v2.TenantServiceUpdateMemberResponse
- 15, // 51: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse
- 25, // 52: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse
- 27, // 53: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse
- 17, // 54: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse
- 19, // 55: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse
- 42, // [42:56] is the sub-list for method output_type
- 28, // [28:42] is the sub-list for method input_type
- 28, // [28:28] is the sub-list for extension type_name
- 28, // [28:28] is the sub-list for extension extendee
- 0, // [0:28] is the sub-list for field type_name
+ 23, // 0: metalstack.api.v2.Tenant.meta:type_name -> metalstack.api.v2.Meta
+ 24, // 1: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole
+ 25, // 2: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp
+ 25, // 3: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp
+ 3, // 4: metalstack.api.v2.TenantServiceListRequest.query:type_name -> metalstack.api.v2.TenantQuery
+ 26, // 5: metalstack.api.v2.TenantQuery.labels:type_name -> metalstack.api.v2.Labels
+ 27, // 6: metalstack.api.v2.TenantQuery.paging:type_name -> metalstack.api.v2.Paging
+ 26, // 7: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 28, // 8: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 29, // 9: metalstack.api.v2.TenantServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 0, // 10: metalstack.api.v2.TenantServiceGetResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 0, // 11: metalstack.api.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant
+ 0, // 12: metalstack.api.v2.TenantServiceCreateResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 0, // 13: metalstack.api.v2.TenantServiceUpdateResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 0, // 14: metalstack.api.v2.TenantServiceDeleteResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 24, // 15: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole
+ 1, // 16: metalstack.api.v2.TenantServiceInviteResponse.invite:type_name -> metalstack.api.v2.TenantInvite
+ 1, // 17: metalstack.api.v2.TenantServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.TenantInvite
+ 1, // 18: metalstack.api.v2.TenantServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.TenantInvite
+ 5, // 19: metalstack.api.v2.TenantService.Create:input_type -> metalstack.api.v2.TenantServiceCreateRequest
+ 2, // 20: metalstack.api.v2.TenantService.List:input_type -> metalstack.api.v2.TenantServiceListRequest
+ 4, // 21: metalstack.api.v2.TenantService.Get:input_type -> metalstack.api.v2.TenantServiceGetRequest
+ 6, // 22: metalstack.api.v2.TenantService.Update:input_type -> metalstack.api.v2.TenantServiceUpdateRequest
+ 7, // 23: metalstack.api.v2.TenantService.Delete:input_type -> metalstack.api.v2.TenantServiceDeleteRequest
+ 13, // 24: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest
+ 19, // 25: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest
+ 21, // 26: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest
+ 15, // 27: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest
+ 17, // 28: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest
+ 10, // 29: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse
+ 9, // 30: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse
+ 8, // 31: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse
+ 11, // 32: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse
+ 12, // 33: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse
+ 14, // 34: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse
+ 20, // 35: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse
+ 22, // 36: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse
+ 16, // 37: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse
+ 18, // 38: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse
+ 29, // [29:39] is the sub-list for method output_type
+ 19, // [19:29] is the sub-list for method input_type
+ 19, // [19:19] is the sub-list for extension type_name
+ 19, // [19:19] is the sub-list for extension extendee
+ 0, // [0:19] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_tenant_proto_init() }
@@ -2109,16 +1555,16 @@ func file_metalstack_api_v2_tenant_proto_init() {
}
file_metalstack_api_v2_common_proto_init()
file_metalstack_api_v2_predefined_rules_proto_init()
- file_metalstack_api_v2_tenant_proto_msgTypes[4].OneofWrappers = []any{}
+ file_metalstack_api_v2_tenant_proto_msgTypes[3].OneofWrappers = []any{}
+ file_metalstack_api_v2_tenant_proto_msgTypes[5].OneofWrappers = []any{}
file_metalstack_api_v2_tenant_proto_msgTypes[6].OneofWrappers = []any{}
- file_metalstack_api_v2_tenant_proto_msgTypes[7].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_tenant_proto_rawDesc), len(file_metalstack_api_v2_tenant_proto_rawDesc)),
NumEnums: 0,
- NumMessages: 32,
+ NumMessages: 23,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/metalstack/api/v2/tenant_member.pb.go b/go/metalstack/api/v2/tenant_member.pb.go
new file mode 100644
index 00000000..ac5f91a2
--- /dev/null
+++ b/go/metalstack/api/v2/tenant_member.pb.go
@@ -0,0 +1,960 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.12
+// protoc (unknown)
+// source: metalstack/api/v2/tenant_member.proto
+
+package apiv2
+
+import (
+ _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// TenantMember defines a user that participates in a tenant.
+type TenantMember struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the user id of the member.
+ Member string `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ // Role is the role of the member.
+ Role TenantRole `protobuf:"varint,2,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole" json:"role,omitempty"`
+ // Projects in which a user is a direct member.
+ Projects []string `protobuf:"bytes,3,rep,name=projects,proto3" json:"projects,omitempty"`
+ // CreatedAt the date when the member was added to the tenant.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // Meta for this tenant member.
+ Meta *Meta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
+ // Tenant is the tenant that this member participates in.
+ Tenant string `protobuf:"bytes,6,opt,name=tenant,proto3" json:"tenant,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMember) Reset() {
+ *x = TenantMember{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMember) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMember) ProtoMessage() {}
+
+func (x *TenantMember) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMember.ProtoReflect.Descriptor instead.
+func (*TenantMember) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *TenantMember) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+func (x *TenantMember) GetRole() TenantRole {
+ if x != nil {
+ return x.Role
+ }
+ return TenantRole_TENANT_ROLE_UNSPECIFIED
+}
+
+func (x *TenantMember) GetProjects() []string {
+ if x != nil {
+ return x.Projects
+ }
+ return nil
+}
+
+func (x *TenantMember) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *TenantMember) GetMeta() *Meta {
+ if x != nil {
+ return x.Meta
+ }
+ return nil
+}
+
+func (x *TenantMember) GetTenant() string {
+ if x != nil {
+ return x.Tenant
+ }
+ return ""
+}
+
+// TenantMemberServiceListRequest is the request payload of the tenant member list request.
+type TenantMemberServiceListRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Login of the tenant.
+ Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
+ // Query for tenant members.
+ Query *TenantMemberQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceListRequest) Reset() {
+ *x = TenantMemberServiceListRequest{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceListRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceListRequest) ProtoMessage() {}
+
+func (x *TenantMemberServiceListRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceListRequest.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceListRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *TenantMemberServiceListRequest) GetLogin() string {
+ if x != nil {
+ return x.Login
+ }
+ return ""
+}
+
+func (x *TenantMemberServiceListRequest) GetQuery() *TenantMemberQuery {
+ if x != nil {
+ return x.Query
+ }
+ return nil
+}
+
+// TenantMemberQuery is used to search tenant members.
+type TenantMemberQuery struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the user id of the member.
+ Member *string `protobuf:"bytes,1,opt,name=member,proto3,oneof" json:"member,omitempty"`
+ // Role is the role of the member.
+ Role *TenantRole `protobuf:"varint,2,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole,oneof" json:"role,omitempty"`
+ // Projects in which a user is a direct member.
+ Projects []string `protobuf:"bytes,3,rep,name=projects,proto3" json:"projects,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberQuery) Reset() {
+ *x = TenantMemberQuery{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberQuery) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberQuery) ProtoMessage() {}
+
+func (x *TenantMemberQuery) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberQuery.ProtoReflect.Descriptor instead.
+func (*TenantMemberQuery) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *TenantMemberQuery) GetMember() string {
+ if x != nil && x.Member != nil {
+ return *x.Member
+ }
+ return ""
+}
+
+func (x *TenantMemberQuery) GetRole() TenantRole {
+ if x != nil && x.Role != nil {
+ return *x.Role
+ }
+ return TenantRole_TENANT_ROLE_UNSPECIFIED
+}
+
+func (x *TenantMemberQuery) GetProjects() []string {
+ if x != nil {
+ return x.Projects
+ }
+ return nil
+}
+
+// TenantMemberServiceGetRequest is the request payload of the tenant member get request.
+type TenantMemberServiceGetRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Login of the tenant.
+ Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
+ // Member is the user id of the member.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceGetRequest) Reset() {
+ *x = TenantMemberServiceGetRequest{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceGetRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceGetRequest) ProtoMessage() {}
+
+func (x *TenantMemberServiceGetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceGetRequest.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceGetRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *TenantMemberServiceGetRequest) GetLogin() string {
+ if x != nil {
+ return x.Login
+ }
+ return ""
+}
+
+func (x *TenantMemberServiceGetRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+// TenantMemberServiceDeleteRequest is used to remove a member from a tenant.
+type TenantMemberServiceDeleteRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Login of the tenant.
+ Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
+ // Member is the id of the member to remove from this tenant.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceDeleteRequest) Reset() {
+ *x = TenantMemberServiceDeleteRequest{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceDeleteRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceDeleteRequest) ProtoMessage() {}
+
+func (x *TenantMemberServiceDeleteRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceDeleteRequest.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceDeleteRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *TenantMemberServiceDeleteRequest) GetLogin() string {
+ if x != nil {
+ return x.Login
+ }
+ return ""
+}
+
+func (x *TenantMemberServiceDeleteRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+// TenantMemberServiceCreateRequest is the request payload for adding a member to a tenant.
+type TenantMemberServiceCreateRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Login of the tenant to which the member will be added.
+ Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
+ // Login of the member to add.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ // Role to assign to the new member.
+ Role TenantRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole" json:"role,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceCreateRequest) Reset() {
+ *x = TenantMemberServiceCreateRequest{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceCreateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceCreateRequest) ProtoMessage() {}
+
+func (x *TenantMemberServiceCreateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceCreateRequest.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceCreateRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *TenantMemberServiceCreateRequest) GetLogin() string {
+ if x != nil {
+ return x.Login
+ }
+ return ""
+}
+
+func (x *TenantMemberServiceCreateRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+func (x *TenantMemberServiceCreateRequest) GetRole() TenantRole {
+ if x != nil {
+ return x.Role
+ }
+ return TenantRole_TENANT_ROLE_UNSPECIFIED
+}
+
+// TenantMemberServiceUpdateRequest is used to update a member from a tenant.
+type TenantMemberServiceUpdateRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Login of the tenant.
+ Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
+ // Member is the id of the member to update in this tenant.
+ Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"`
+ // Role of this user in this tenant.
+ Role *TenantRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole,oneof" json:"role,omitempty"`
+ // UpdateMeta contains the timestamp and strategy to be used in this update request.
+ UpdateMeta *UpdateMeta `protobuf:"bytes,4,opt,name=update_meta,json=updateMeta,proto3" json:"update_meta,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceUpdateRequest) Reset() {
+ *x = TenantMemberServiceUpdateRequest{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceUpdateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceUpdateRequest) ProtoMessage() {}
+
+func (x *TenantMemberServiceUpdateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceUpdateRequest.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceUpdateRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *TenantMemberServiceUpdateRequest) GetLogin() string {
+ if x != nil {
+ return x.Login
+ }
+ return ""
+}
+
+func (x *TenantMemberServiceUpdateRequest) GetMember() string {
+ if x != nil {
+ return x.Member
+ }
+ return ""
+}
+
+func (x *TenantMemberServiceUpdateRequest) GetRole() TenantRole {
+ if x != nil && x.Role != nil {
+ return *x.Role
+ }
+ return TenantRole_TENANT_ROLE_UNSPECIFIED
+}
+
+func (x *TenantMemberServiceUpdateRequest) GetUpdateMeta() *UpdateMeta {
+ if x != nil {
+ return x.UpdateMeta
+ }
+ return nil
+}
+
+// TenantMemberServiceGetResponse is the response payload of the tenant member get request.
+type TenantMemberServiceGetResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the member of this tenant.
+ Member *TenantMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceGetResponse) Reset() {
+ *x = TenantMemberServiceGetResponse{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceGetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceGetResponse) ProtoMessage() {}
+
+func (x *TenantMemberServiceGetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceGetResponse.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceGetResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *TenantMemberServiceGetResponse) GetMember() *TenantMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// TenantMemberServiceListResponse is the response payload of the tenant member list request.
+type TenantMemberServiceListResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Members is the list of tenant members.
+ Members []*TenantMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceListResponse) Reset() {
+ *x = TenantMemberServiceListResponse{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceListResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceListResponse) ProtoMessage() {}
+
+func (x *TenantMemberServiceListResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[8]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceListResponse.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceListResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *TenantMemberServiceListResponse) GetMembers() []*TenantMember {
+ if x != nil {
+ return x.Members
+ }
+ return nil
+}
+
+// TenantMemberServiceCreateResponse is the response payload of the tenant member create request.
+type TenantMemberServiceCreateResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the member of this tenant.
+ Member *TenantMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceCreateResponse) Reset() {
+ *x = TenantMemberServiceCreateResponse{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceCreateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceCreateResponse) ProtoMessage() {}
+
+func (x *TenantMemberServiceCreateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[9]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceCreateResponse.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceCreateResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *TenantMemberServiceCreateResponse) GetMember() *TenantMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// TenantMemberServiceUpdateResponse is the response payload of the tenant member update request.
+type TenantMemberServiceUpdateResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the member of this tenant.
+ Member *TenantMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceUpdateResponse) Reset() {
+ *x = TenantMemberServiceUpdateResponse{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceUpdateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceUpdateResponse) ProtoMessage() {}
+
+func (x *TenantMemberServiceUpdateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[10]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceUpdateResponse.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceUpdateResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *TenantMemberServiceUpdateResponse) GetMember() *TenantMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// TenantMemberServiceDeleteResponse is the response payload of the tenant member delete request.
+type TenantMemberServiceDeleteResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the member of this tenant.
+ Member *TenantMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceDeleteResponse) Reset() {
+ *x = TenantMemberServiceDeleteResponse{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceDeleteResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceDeleteResponse) ProtoMessage() {}
+
+func (x *TenantMemberServiceDeleteResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[11]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceDeleteResponse.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceDeleteResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *TenantMemberServiceDeleteResponse) GetMember() *TenantMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+// TenantMemberServiceLeaveRequest is used to leave a tenant. This way a member is not required to ask a tenant owner to remove him.
+type TenantMemberServiceLeaveRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Login of the tenant that the user wants to leave.
+ Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceLeaveRequest) Reset() {
+ *x = TenantMemberServiceLeaveRequest{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceLeaveRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceLeaveRequest) ProtoMessage() {}
+
+func (x *TenantMemberServiceLeaveRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[12]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceLeaveRequest.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceLeaveRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *TenantMemberServiceLeaveRequest) GetLogin() string {
+ if x != nil {
+ return x.Login
+ }
+ return ""
+}
+
+// TenantMemberServiceLeaveResponse is the response payload to a leave tenant request.
+type TenantMemberServiceLeaveResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Member is the member of this tenant.
+ Member *TenantMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TenantMemberServiceLeaveResponse) Reset() {
+ *x = TenantMemberServiceLeaveResponse{}
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TenantMemberServiceLeaveResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TenantMemberServiceLeaveResponse) ProtoMessage() {}
+
+func (x *TenantMemberServiceLeaveResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_tenant_member_proto_msgTypes[13]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TenantMemberServiceLeaveResponse.ProtoReflect.Descriptor instead.
+func (*TenantMemberServiceLeaveResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_tenant_member_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *TenantMemberServiceLeaveResponse) GetMember() *TenantMember {
+ if x != nil {
+ return x.Member
+ }
+ return nil
+}
+
+var File_metalstack_api_v2_tenant_member_proto protoreflect.FileDescriptor
+
+const file_metalstack_api_v2_tenant_member_proto_rawDesc = "" +
+ "\n" +
+ "%metalstack/api/v2/tenant_member.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\x99\x02\n" +
+ "\fTenantMember\x12#\n" +
+ "\x06member\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" +
+ "\x04role\x18\x02 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n" +
+ "\bprojects\x18\x03 \x03(\tR\bprojects\x129\n" +
+ "\n" +
+ "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n" +
+ "\x04meta\x18\x05 \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\x12#\n" +
+ "\x06tenant\x18\x06 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\"\x7f\n" +
+ "\x1eTenantMemberServiceListRequest\x12!\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12:\n" +
+ "\x05query\x18\x02 \x01(\v2$.metalstack.api.v2.TenantMemberQueryR\x05query\"\xaf\x01\n" +
+ "\x11TenantMemberQuery\x12(\n" +
+ "\x06member\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01H\x00R\x06member\x88\x01\x01\x12@\n" +
+ "\x04role\x18\x02 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x04role\x88\x01\x01\x12\x1a\n" +
+ "\bprojects\x18\x03 \x03(\tR\bprojectsB\t\n" +
+ "\a_memberB\a\n" +
+ "\x05_role\"g\n" +
+ "\x1dTenantMemberServiceGetRequest\x12!\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"]\n" +
+ " TenantMemberServiceDeleteRequest\x12!\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n" +
+ "\x06member\x18\x02 \x01(\tR\x06member\"\xa7\x01\n" +
+ " TenantMemberServiceCreateRequest\x12!\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" +
+ "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"\xfd\x01\n" +
+ " TenantMemberServiceUpdateRequest\x12!\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n" +
+ "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12@\n" +
+ "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x04role\x88\x01\x01\x12F\n" +
+ "\vupdate_meta\x18\x04 \x01(\v2\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\n" +
+ "updateMetaB\a\n" +
+ "\x05_role\"Y\n" +
+ "\x1eTenantMemberServiceGetResponse\x127\n" +
+ "\x06member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\x06member\"\\\n" +
+ "\x1fTenantMemberServiceListResponse\x129\n" +
+ "\amembers\x18\x01 \x03(\v2\x1f.metalstack.api.v2.TenantMemberR\amembers\"\\\n" +
+ "!TenantMemberServiceCreateResponse\x127\n" +
+ "\x06member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\x06member\"\\\n" +
+ "!TenantMemberServiceUpdateResponse\x127\n" +
+ "\x06member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\x06member\"\\\n" +
+ "!TenantMemberServiceDeleteResponse\x127\n" +
+ "\x06member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\x06member\"D\n" +
+ "\x1fTenantMemberServiceLeaveRequest\x12!\n" +
+ "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\"[\n" +
+ " TenantMemberServiceLeaveResponse\x127\n" +
+ "\x06member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\x06member2\x88\x06\n" +
+ "\x13TenantMemberService\x12~\n" +
+ "\x06Create\x123.metalstack.api.v2.TenantMemberServiceCreateRequest\x1a4.metalstack.api.v2.TenantMemberServiceCreateResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12{\n" +
+ "\x04List\x121.metalstack.api.v2.TenantMemberServiceListRequest\x1a2.metalstack.api.v2.TenantMemberServiceListResponse\"\f\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12x\n" +
+ "\x03Get\x120.metalstack.api.v2.TenantMemberServiceGetRequest\x1a1.metalstack.api.v2.TenantMemberServiceGetResponse\"\f\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12~\n" +
+ "\x06Update\x123.metalstack.api.v2.TenantMemberServiceUpdateRequest\x1a4.metalstack.api.v2.TenantMemberServiceUpdateResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12~\n" +
+ "\x06Delete\x123.metalstack.api.v2.TenantMemberServiceDeleteRequest\x1a4.metalstack.api.v2.TenantMemberServiceDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12z\n" +
+ "\x05Leave\x122.metalstack.api.v2.TenantMemberServiceLeaveRequest\x1a3.metalstack.api.v2.TenantMemberServiceLeaveResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01B\xc7\x01\n" +
+ "\x15com.metalstack.api.v2B\x11TenantMemberProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3"
+
+var (
+ file_metalstack_api_v2_tenant_member_proto_rawDescOnce sync.Once
+ file_metalstack_api_v2_tenant_member_proto_rawDescData []byte
+)
+
+func file_metalstack_api_v2_tenant_member_proto_rawDescGZIP() []byte {
+ file_metalstack_api_v2_tenant_member_proto_rawDescOnce.Do(func() {
+ file_metalstack_api_v2_tenant_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_tenant_member_proto_rawDesc), len(file_metalstack_api_v2_tenant_member_proto_rawDesc)))
+ })
+ return file_metalstack_api_v2_tenant_member_proto_rawDescData
+}
+
+var file_metalstack_api_v2_tenant_member_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
+var file_metalstack_api_v2_tenant_member_proto_goTypes = []any{
+ (*TenantMember)(nil), // 0: metalstack.api.v2.TenantMember
+ (*TenantMemberServiceListRequest)(nil), // 1: metalstack.api.v2.TenantMemberServiceListRequest
+ (*TenantMemberQuery)(nil), // 2: metalstack.api.v2.TenantMemberQuery
+ (*TenantMemberServiceGetRequest)(nil), // 3: metalstack.api.v2.TenantMemberServiceGetRequest
+ (*TenantMemberServiceDeleteRequest)(nil), // 4: metalstack.api.v2.TenantMemberServiceDeleteRequest
+ (*TenantMemberServiceCreateRequest)(nil), // 5: metalstack.api.v2.TenantMemberServiceCreateRequest
+ (*TenantMemberServiceUpdateRequest)(nil), // 6: metalstack.api.v2.TenantMemberServiceUpdateRequest
+ (*TenantMemberServiceGetResponse)(nil), // 7: metalstack.api.v2.TenantMemberServiceGetResponse
+ (*TenantMemberServiceListResponse)(nil), // 8: metalstack.api.v2.TenantMemberServiceListResponse
+ (*TenantMemberServiceCreateResponse)(nil), // 9: metalstack.api.v2.TenantMemberServiceCreateResponse
+ (*TenantMemberServiceUpdateResponse)(nil), // 10: metalstack.api.v2.TenantMemberServiceUpdateResponse
+ (*TenantMemberServiceDeleteResponse)(nil), // 11: metalstack.api.v2.TenantMemberServiceDeleteResponse
+ (*TenantMemberServiceLeaveRequest)(nil), // 12: metalstack.api.v2.TenantMemberServiceLeaveRequest
+ (*TenantMemberServiceLeaveResponse)(nil), // 13: metalstack.api.v2.TenantMemberServiceLeaveResponse
+ (TenantRole)(0), // 14: metalstack.api.v2.TenantRole
+ (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp
+ (*Meta)(nil), // 16: metalstack.api.v2.Meta
+ (*UpdateMeta)(nil), // 17: metalstack.api.v2.UpdateMeta
+}
+var file_metalstack_api_v2_tenant_member_proto_depIdxs = []int32{
+ 14, // 0: metalstack.api.v2.TenantMember.role:type_name -> metalstack.api.v2.TenantRole
+ 15, // 1: metalstack.api.v2.TenantMember.created_at:type_name -> google.protobuf.Timestamp
+ 16, // 2: metalstack.api.v2.TenantMember.meta:type_name -> metalstack.api.v2.Meta
+ 2, // 3: metalstack.api.v2.TenantMemberServiceListRequest.query:type_name -> metalstack.api.v2.TenantMemberQuery
+ 14, // 4: metalstack.api.v2.TenantMemberQuery.role:type_name -> metalstack.api.v2.TenantRole
+ 14, // 5: metalstack.api.v2.TenantMemberServiceCreateRequest.role:type_name -> metalstack.api.v2.TenantRole
+ 14, // 6: metalstack.api.v2.TenantMemberServiceUpdateRequest.role:type_name -> metalstack.api.v2.TenantRole
+ 17, // 7: metalstack.api.v2.TenantMemberServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 0, // 8: metalstack.api.v2.TenantMemberServiceGetResponse.member:type_name -> metalstack.api.v2.TenantMember
+ 0, // 9: metalstack.api.v2.TenantMemberServiceListResponse.members:type_name -> metalstack.api.v2.TenantMember
+ 0, // 10: metalstack.api.v2.TenantMemberServiceCreateResponse.member:type_name -> metalstack.api.v2.TenantMember
+ 0, // 11: metalstack.api.v2.TenantMemberServiceUpdateResponse.member:type_name -> metalstack.api.v2.TenantMember
+ 0, // 12: metalstack.api.v2.TenantMemberServiceDeleteResponse.member:type_name -> metalstack.api.v2.TenantMember
+ 0, // 13: metalstack.api.v2.TenantMemberServiceLeaveResponse.member:type_name -> metalstack.api.v2.TenantMember
+ 5, // 14: metalstack.api.v2.TenantMemberService.Create:input_type -> metalstack.api.v2.TenantMemberServiceCreateRequest
+ 1, // 15: metalstack.api.v2.TenantMemberService.List:input_type -> metalstack.api.v2.TenantMemberServiceListRequest
+ 3, // 16: metalstack.api.v2.TenantMemberService.Get:input_type -> metalstack.api.v2.TenantMemberServiceGetRequest
+ 6, // 17: metalstack.api.v2.TenantMemberService.Update:input_type -> metalstack.api.v2.TenantMemberServiceUpdateRequest
+ 4, // 18: metalstack.api.v2.TenantMemberService.Delete:input_type -> metalstack.api.v2.TenantMemberServiceDeleteRequest
+ 12, // 19: metalstack.api.v2.TenantMemberService.Leave:input_type -> metalstack.api.v2.TenantMemberServiceLeaveRequest
+ 9, // 20: metalstack.api.v2.TenantMemberService.Create:output_type -> metalstack.api.v2.TenantMemberServiceCreateResponse
+ 8, // 21: metalstack.api.v2.TenantMemberService.List:output_type -> metalstack.api.v2.TenantMemberServiceListResponse
+ 7, // 22: metalstack.api.v2.TenantMemberService.Get:output_type -> metalstack.api.v2.TenantMemberServiceGetResponse
+ 10, // 23: metalstack.api.v2.TenantMemberService.Update:output_type -> metalstack.api.v2.TenantMemberServiceUpdateResponse
+ 11, // 24: metalstack.api.v2.TenantMemberService.Delete:output_type -> metalstack.api.v2.TenantMemberServiceDeleteResponse
+ 13, // 25: metalstack.api.v2.TenantMemberService.Leave:output_type -> metalstack.api.v2.TenantMemberServiceLeaveResponse
+ 20, // [20:26] is the sub-list for method output_type
+ 14, // [14:20] is the sub-list for method input_type
+ 14, // [14:14] is the sub-list for extension type_name
+ 14, // [14:14] is the sub-list for extension extendee
+ 0, // [0:14] is the sub-list for field type_name
+}
+
+func init() { file_metalstack_api_v2_tenant_member_proto_init() }
+func file_metalstack_api_v2_tenant_member_proto_init() {
+ if File_metalstack_api_v2_tenant_member_proto != nil {
+ return
+ }
+ file_metalstack_api_v2_common_proto_init()
+ file_metalstack_api_v2_predefined_rules_proto_init()
+ file_metalstack_api_v2_tenant_member_proto_msgTypes[2].OneofWrappers = []any{}
+ file_metalstack_api_v2_tenant_member_proto_msgTypes[6].OneofWrappers = []any{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_tenant_member_proto_rawDesc), len(file_metalstack_api_v2_tenant_member_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 14,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_metalstack_api_v2_tenant_member_proto_goTypes,
+ DependencyIndexes: file_metalstack_api_v2_tenant_member_proto_depIdxs,
+ MessageInfos: file_metalstack_api_v2_tenant_member_proto_msgTypes,
+ }.Build()
+ File_metalstack_api_v2_tenant_member_proto = out.File
+ file_metalstack_api_v2_tenant_member_proto_goTypes = nil
+ file_metalstack_api_v2_tenant_member_proto_depIdxs = nil
+}
diff --git a/go/metalstack/cli/v2/project.pb.go b/go/metalstack/cli/v2/project.pb.go
deleted file mode 100644
index 6c2ec658..00000000
--- a/go/metalstack/cli/v2/project.pb.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.36.12
-// protoc (unknown)
-// source: metalstack/cli/v2/project.proto
-
-package cliv2
-
-import (
- _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
- v2 "github.com/metal-stack/api/go/metalstack/api/v2"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
- unsafe "unsafe"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// ProjectMember defines a user that participates in a project.
-type ProjectMember struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // project is the project id to which the member belongs.
- Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
- // ProjectMember is the project member.
- ProjectMember *v2.ProjectMember `protobuf:"bytes,2,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *ProjectMember) Reset() {
- *x = ProjectMember{}
- mi := &file_metalstack_cli_v2_project_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ProjectMember) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProjectMember) ProtoMessage() {}
-
-func (x *ProjectMember) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_cli_v2_project_proto_msgTypes[0]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProjectMember.ProtoReflect.Descriptor instead.
-func (*ProjectMember) Descriptor() ([]byte, []int) {
- return file_metalstack_cli_v2_project_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ProjectMember) GetProject() string {
- if x != nil {
- return x.Project
- }
- return ""
-}
-
-func (x *ProjectMember) GetProjectMember() *v2.ProjectMember {
- if x != nil {
- return x.ProjectMember
- }
- return nil
-}
-
-var File_metalstack_cli_v2_project_proto protoreflect.FileDescriptor
-
-const file_metalstack_cli_v2_project_proto_rawDesc = "" +
- "\n" +
- "\x1fmetalstack/cli/v2/project.proto\x12\x11metalstack.cli.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1fmetalstack/api/v2/project.proto\"|\n" +
- "\rProjectMember\x12\"\n" +
- "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12G\n" +
- "\x0eproject_member\x18\x02 \x01(\v2 .metalstack.api.v2.ProjectMemberR\rprojectMemberB\xc2\x01\n" +
- "\x15com.metalstack.cli.v2B\fProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\xa2\x02\x03MCX\xaa\x02\x11Metalstack.Cli.V2\xca\x02\x11Metalstack\\Cli\\V2\xe2\x02\x1dMetalstack\\Cli\\V2\\GPBMetadata\xea\x02\x13Metalstack::Cli::V2b\x06proto3"
-
-var (
- file_metalstack_cli_v2_project_proto_rawDescOnce sync.Once
- file_metalstack_cli_v2_project_proto_rawDescData []byte
-)
-
-func file_metalstack_cli_v2_project_proto_rawDescGZIP() []byte {
- file_metalstack_cli_v2_project_proto_rawDescOnce.Do(func() {
- file_metalstack_cli_v2_project_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_project_proto_rawDesc), len(file_metalstack_cli_v2_project_proto_rawDesc)))
- })
- return file_metalstack_cli_v2_project_proto_rawDescData
-}
-
-var file_metalstack_cli_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_metalstack_cli_v2_project_proto_goTypes = []any{
- (*ProjectMember)(nil), // 0: metalstack.cli.v2.ProjectMember
- (*v2.ProjectMember)(nil), // 1: metalstack.api.v2.ProjectMember
-}
-var file_metalstack_cli_v2_project_proto_depIdxs = []int32{
- 1, // 0: metalstack.cli.v2.ProjectMember.project_member:type_name -> metalstack.api.v2.ProjectMember
- 1, // [1:1] is the sub-list for method output_type
- 1, // [1:1] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_metalstack_cli_v2_project_proto_init() }
-func file_metalstack_cli_v2_project_proto_init() {
- if File_metalstack_cli_v2_project_proto != nil {
- return
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_project_proto_rawDesc), len(file_metalstack_cli_v2_project_proto_rawDesc)),
- NumEnums: 0,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_metalstack_cli_v2_project_proto_goTypes,
- DependencyIndexes: file_metalstack_cli_v2_project_proto_depIdxs,
- MessageInfos: file_metalstack_cli_v2_project_proto_msgTypes,
- }.Build()
- File_metalstack_cli_v2_project_proto = out.File
- file_metalstack_cli_v2_project_proto_goTypes = nil
- file_metalstack_cli_v2_project_proto_depIdxs = nil
-}
diff --git a/go/metalstack/cli/v2/tenant.pb.go b/go/metalstack/cli/v2/tenant.pb.go
deleted file mode 100644
index 65313e26..00000000
--- a/go/metalstack/cli/v2/tenant.pb.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.36.12
-// protoc (unknown)
-// source: metalstack/cli/v2/tenant.proto
-
-package cliv2
-
-import (
- _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
- v2 "github.com/metal-stack/api/go/metalstack/api/v2"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
- unsafe "unsafe"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// TenantMember defines a user that participates in a tenant.
-type TenantMember struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // tenant is the login tenant to which the member belongs.
- Tenant string `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
- // TenantMember is the tenant member.
- TenantMember *v2.TenantMember `protobuf:"bytes,2,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *TenantMember) Reset() {
- *x = TenantMember{}
- mi := &file_metalstack_cli_v2_tenant_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *TenantMember) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TenantMember) ProtoMessage() {}
-
-func (x *TenantMember) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_cli_v2_tenant_proto_msgTypes[0]
- if x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TenantMember.ProtoReflect.Descriptor instead.
-func (*TenantMember) Descriptor() ([]byte, []int) {
- return file_metalstack_cli_v2_tenant_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *TenantMember) GetTenant() string {
- if x != nil {
- return x.Tenant
- }
- return ""
-}
-
-func (x *TenantMember) GetTenantMember() *v2.TenantMember {
- if x != nil {
- return x.TenantMember
- }
- return nil
-}
-
-var File_metalstack_cli_v2_tenant_proto protoreflect.FileDescriptor
-
-const file_metalstack_cli_v2_tenant_proto_rawDesc = "" +
- "\n" +
- "\x1emetalstack/cli/v2/tenant.proto\x12\x11metalstack.cli.v2\x1a\x1bbuf/validate/validate.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"y\n" +
- "\fTenantMember\x12#\n" +
- "\x06tenant\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12D\n" +
- "\rtenant_member\x18\x02 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMemberB\xc1\x01\n" +
- "\x15com.metalstack.cli.v2B\vTenantProtoP\x01Z5github.com/metal-stack/api/go/metalstack/cli/v2;cliv2\xa2\x02\x03MCX\xaa\x02\x11Metalstack.Cli.V2\xca\x02\x11Metalstack\\Cli\\V2\xe2\x02\x1dMetalstack\\Cli\\V2\\GPBMetadata\xea\x02\x13Metalstack::Cli::V2b\x06proto3"
-
-var (
- file_metalstack_cli_v2_tenant_proto_rawDescOnce sync.Once
- file_metalstack_cli_v2_tenant_proto_rawDescData []byte
-)
-
-func file_metalstack_cli_v2_tenant_proto_rawDescGZIP() []byte {
- file_metalstack_cli_v2_tenant_proto_rawDescOnce.Do(func() {
- file_metalstack_cli_v2_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_tenant_proto_rawDesc), len(file_metalstack_cli_v2_tenant_proto_rawDesc)))
- })
- return file_metalstack_cli_v2_tenant_proto_rawDescData
-}
-
-var file_metalstack_cli_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_metalstack_cli_v2_tenant_proto_goTypes = []any{
- (*TenantMember)(nil), // 0: metalstack.cli.v2.TenantMember
- (*v2.TenantMember)(nil), // 1: metalstack.api.v2.TenantMember
-}
-var file_metalstack_cli_v2_tenant_proto_depIdxs = []int32{
- 1, // 0: metalstack.cli.v2.TenantMember.tenant_member:type_name -> metalstack.api.v2.TenantMember
- 1, // [1:1] is the sub-list for method output_type
- 1, // [1:1] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_metalstack_cli_v2_tenant_proto_init() }
-func file_metalstack_cli_v2_tenant_proto_init() {
- if File_metalstack_cli_v2_tenant_proto != nil {
- return
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_cli_v2_tenant_proto_rawDesc), len(file_metalstack_cli_v2_tenant_proto_rawDesc)),
- NumEnums: 0,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_metalstack_cli_v2_tenant_proto_goTypes,
- DependencyIndexes: file_metalstack_cli_v2_tenant_proto_depIdxs,
- MessageInfos: file_metalstack_cli_v2_tenant_proto_msgTypes,
- }.Build()
- File_metalstack_cli_v2_tenant_proto = out.File
- file_metalstack_cli_v2_tenant_proto_goTypes = nil
- file_metalstack_cli_v2_tenant_proto_depIdxs = nil
-}
diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go
index 2b722400..4efcc657 100755
--- a/go/permissions/servicepermissions.go
+++ b/go/permissions/servicepermissions.go
@@ -34,10 +34,12 @@ func GetServices() []string {
"metalstack.api.v2.MethodService",
"metalstack.api.v2.NetworkService",
"metalstack.api.v2.PartitionService",
+ "metalstack.api.v2.ProjectMemberService",
"metalstack.api.v2.ProjectService",
"metalstack.api.v2.SizeImageConstraintService",
"metalstack.api.v2.SizeReservationService",
"metalstack.api.v2.SizeService",
+ "metalstack.api.v2.TenantMemberService",
"metalstack.api.v2.TenantService",
"metalstack.api.v2.TokenService",
"metalstack.api.v2.UserService",
@@ -90,8 +92,10 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": {},
"/metalstack.admin.v2.PartitionService/Delete": {},
"/metalstack.admin.v2.PartitionService/Update": {},
+ "/metalstack.admin.v2.ProjectService/AddMember": {},
"/metalstack.admin.v2.ProjectService/Create": {},
"/metalstack.admin.v2.ProjectService/List": {},
+ "/metalstack.admin.v2.ProjectService/RemoveMember": {},
"/metalstack.admin.v2.SizeImageConstraintService/Create": {},
"/metalstack.admin.v2.SizeImageConstraintService/Delete": {},
"/metalstack.admin.v2.SizeImageConstraintService/Get": {},
@@ -189,29 +193,35 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.AuditService/Get": {},
"/metalstack.api.v2.AuditService/List": {},
"/metalstack.api.v2.ProjectService/Create": {},
- "/metalstack.api.v2.TenantService/AddMember": {},
+ "/metalstack.api.v2.TenantMemberService/Create": {},
+ "/metalstack.api.v2.TenantMemberService/Delete": {},
+ "/metalstack.api.v2.TenantMemberService/Get": {},
+ "/metalstack.api.v2.TenantMemberService/List": {},
+ "/metalstack.api.v2.TenantMemberService/Update": {},
"/metalstack.api.v2.TenantService/Delete": {},
"/metalstack.api.v2.TenantService/Get": {},
"/metalstack.api.v2.TenantService/Invite": {},
"/metalstack.api.v2.TenantService/InviteDelete": {},
"/metalstack.api.v2.TenantService/InvitesList": {},
- "/metalstack.api.v2.TenantService/RemoveMember": {},
"/metalstack.api.v2.TenantService/Update": {},
- "/metalstack.api.v2.TenantService/UpdateMember": {},
},
apiv2.TenantRole_TENANT_ROLE_EDITOR: map[string]struct{}{
- "/metalstack.api.v2.ProjectService/Create": {},
- "/metalstack.api.v2.TenantService/AddMember": {},
- "/metalstack.api.v2.TenantService/Delete": {},
- "/metalstack.api.v2.TenantService/Get": {},
- "/metalstack.api.v2.TenantService/Update": {},
+ "/metalstack.api.v2.ProjectService/Create": {},
+ "/metalstack.api.v2.TenantMemberService/Get": {},
+ "/metalstack.api.v2.TenantMemberService/List": {},
+ "/metalstack.api.v2.TenantService/Delete": {},
+ "/metalstack.api.v2.TenantService/Get": {},
+ "/metalstack.api.v2.TenantService/Update": {},
},
apiv2.TenantRole_TENANT_ROLE_VIEWER: map[string]struct{}{
- "/metalstack.api.v2.TenantService/Get": {},
- "/metalstack.api.v2.TenantService/Leave": {},
+ "/metalstack.api.v2.TenantMemberService/Get": {},
+ "/metalstack.api.v2.TenantMemberService/List": {},
+ "/metalstack.api.v2.TenantService/Get": {},
},
apiv2.TenantRole_TENANT_ROLE_GUEST: map[string]struct{}{
- "/metalstack.api.v2.TenantService/Get": {},
+ "/metalstack.api.v2.TenantMemberService/Get": {},
+ "/metalstack.api.v2.TenantMemberService/List": {},
+ "/metalstack.api.v2.TenantService/Get": {},
},
},
Project: Project{
@@ -234,15 +244,17 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.NetworkService/List": {},
"/metalstack.api.v2.NetworkService/ListBaseNetworks": {},
"/metalstack.api.v2.NetworkService/Update": {},
- "/metalstack.api.v2.ProjectService/AddMember": {},
+ "/metalstack.api.v2.ProjectMemberService/Create": {},
+ "/metalstack.api.v2.ProjectMemberService/Delete": {},
+ "/metalstack.api.v2.ProjectMemberService/Get": {},
+ "/metalstack.api.v2.ProjectMemberService/List": {},
+ "/metalstack.api.v2.ProjectMemberService/Update": {},
"/metalstack.api.v2.ProjectService/Delete": {},
"/metalstack.api.v2.ProjectService/Get": {},
"/metalstack.api.v2.ProjectService/Invite": {},
"/metalstack.api.v2.ProjectService/InviteDelete": {},
"/metalstack.api.v2.ProjectService/InvitesList": {},
- "/metalstack.api.v2.ProjectService/RemoveMember": {},
"/metalstack.api.v2.ProjectService/Update": {},
- "/metalstack.api.v2.ProjectService/UpdateMember": {},
"/metalstack.api.v2.SizeReservationService/Get": {},
"/metalstack.api.v2.SizeReservationService/List": {},
},
@@ -265,6 +277,8 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.NetworkService/List": {},
"/metalstack.api.v2.NetworkService/ListBaseNetworks": {},
"/metalstack.api.v2.NetworkService/Update": {},
+ "/metalstack.api.v2.ProjectMemberService/Get": {},
+ "/metalstack.api.v2.ProjectMemberService/List": {},
"/metalstack.api.v2.ProjectService/Get": {},
"/metalstack.api.v2.ProjectService/Update": {},
"/metalstack.api.v2.SizeReservationService/Get": {},
@@ -278,8 +292,9 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.NetworkService/Get": {},
"/metalstack.api.v2.NetworkService/List": {},
"/metalstack.api.v2.NetworkService/ListBaseNetworks": {},
+ "/metalstack.api.v2.ProjectMemberService/Get": {},
+ "/metalstack.api.v2.ProjectMemberService/List": {},
"/metalstack.api.v2.ProjectService/Get": {},
- "/metalstack.api.v2.ProjectService/Leave": {},
"/metalstack.api.v2.SizeReservationService/Get": {},
"/metalstack.api.v2.SizeReservationService/List": {},
},
@@ -323,8 +338,10 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": {},
"/metalstack.admin.v2.PartitionService/Delete": {},
"/metalstack.admin.v2.PartitionService/Update": {},
+ "/metalstack.admin.v2.ProjectService/AddMember": {},
"/metalstack.admin.v2.ProjectService/Create": {},
"/metalstack.admin.v2.ProjectService/List": {},
+ "/metalstack.admin.v2.ProjectService/RemoveMember": {},
"/metalstack.admin.v2.SizeImageConstraintService/Create": {},
"/metalstack.admin.v2.SizeImageConstraintService/Delete": {},
"/metalstack.admin.v2.SizeImageConstraintService/Get": {},
@@ -387,7 +404,12 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.NetworkService/Update": {},
"/metalstack.api.v2.PartitionService/Get": {},
"/metalstack.api.v2.PartitionService/List": {},
- "/metalstack.api.v2.ProjectService/AddMember": {},
+ "/metalstack.api.v2.ProjectMemberService/Create": {},
+ "/metalstack.api.v2.ProjectMemberService/Delete": {},
+ "/metalstack.api.v2.ProjectMemberService/Get": {},
+ "/metalstack.api.v2.ProjectMemberService/Leave": {},
+ "/metalstack.api.v2.ProjectMemberService/List": {},
+ "/metalstack.api.v2.ProjectMemberService/Update": {},
"/metalstack.api.v2.ProjectService/Create": {},
"/metalstack.api.v2.ProjectService/Delete": {},
"/metalstack.api.v2.ProjectService/Get": {},
@@ -396,17 +418,19 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.ProjectService/InviteDelete": {},
"/metalstack.api.v2.ProjectService/InviteGet": {},
"/metalstack.api.v2.ProjectService/InvitesList": {},
- "/metalstack.api.v2.ProjectService/Leave": {},
"/metalstack.api.v2.ProjectService/List": {},
- "/metalstack.api.v2.ProjectService/RemoveMember": {},
"/metalstack.api.v2.ProjectService/Update": {},
- "/metalstack.api.v2.ProjectService/UpdateMember": {},
"/metalstack.api.v2.SizeImageConstraintService/Try": {},
"/metalstack.api.v2.SizeReservationService/Get": {},
"/metalstack.api.v2.SizeReservationService/List": {},
"/metalstack.api.v2.SizeService/Get": {},
"/metalstack.api.v2.SizeService/List": {},
- "/metalstack.api.v2.TenantService/AddMember": {},
+ "/metalstack.api.v2.TenantMemberService/Create": {},
+ "/metalstack.api.v2.TenantMemberService/Delete": {},
+ "/metalstack.api.v2.TenantMemberService/Get": {},
+ "/metalstack.api.v2.TenantMemberService/Leave": {},
+ "/metalstack.api.v2.TenantMemberService/List": {},
+ "/metalstack.api.v2.TenantMemberService/Update": {},
"/metalstack.api.v2.TenantService/Create": {},
"/metalstack.api.v2.TenantService/Delete": {},
"/metalstack.api.v2.TenantService/Get": {},
@@ -415,11 +439,8 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.TenantService/InviteDelete": {},
"/metalstack.api.v2.TenantService/InviteGet": {},
"/metalstack.api.v2.TenantService/InvitesList": {},
- "/metalstack.api.v2.TenantService/Leave": {},
"/metalstack.api.v2.TenantService/List": {},
- "/metalstack.api.v2.TenantService/RemoveMember": {},
"/metalstack.api.v2.TenantService/Update": {},
- "/metalstack.api.v2.TenantService/UpdateMember": {},
"/metalstack.api.v2.TokenService/Create": {},
"/metalstack.api.v2.TokenService/Get": {},
"/metalstack.api.v2.TokenService/List": {},
@@ -461,12 +482,14 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.MethodService/TokenScopedList": true,
"/metalstack.api.v2.PartitionService/Get": true,
"/metalstack.api.v2.PartitionService/List": true,
+ "/metalstack.api.v2.ProjectMemberService/Leave": true,
"/metalstack.api.v2.ProjectService/InviteAccept": true,
"/metalstack.api.v2.ProjectService/InviteGet": true,
"/metalstack.api.v2.ProjectService/List": true,
"/metalstack.api.v2.SizeImageConstraintService/Try": true,
"/metalstack.api.v2.SizeService/Get": true,
"/metalstack.api.v2.SizeService/List": true,
+ "/metalstack.api.v2.TenantMemberService/Leave": true,
"/metalstack.api.v2.TenantService/Create": true,
"/metalstack.api.v2.TenantService/InviteAccept": true,
"/metalstack.api.v2.TenantService/InviteGet": true,
@@ -515,8 +538,10 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": true,
"/metalstack.admin.v2.PartitionService/Delete": true,
"/metalstack.admin.v2.PartitionService/Update": true,
+ "/metalstack.admin.v2.ProjectService/AddMember": true,
"/metalstack.admin.v2.ProjectService/Create": true,
"/metalstack.admin.v2.ProjectService/List": true,
+ "/metalstack.admin.v2.ProjectService/RemoveMember": true,
"/metalstack.admin.v2.SizeImageConstraintService/Create": true,
"/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
"/metalstack.admin.v2.SizeImageConstraintService/Get": true,
@@ -573,16 +598,17 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.AuditService/Get": true,
"/metalstack.api.v2.AuditService/List": true,
"/metalstack.api.v2.ProjectService/Create": true,
- "/metalstack.api.v2.TenantService/AddMember": true,
+ "/metalstack.api.v2.TenantMemberService/Create": true,
+ "/metalstack.api.v2.TenantMemberService/Delete": true,
+ "/metalstack.api.v2.TenantMemberService/Get": true,
+ "/metalstack.api.v2.TenantMemberService/List": true,
+ "/metalstack.api.v2.TenantMemberService/Update": true,
"/metalstack.api.v2.TenantService/Delete": true,
"/metalstack.api.v2.TenantService/Get": true,
"/metalstack.api.v2.TenantService/Invite": true,
"/metalstack.api.v2.TenantService/InviteDelete": true,
"/metalstack.api.v2.TenantService/InvitesList": true,
- "/metalstack.api.v2.TenantService/Leave": true,
- "/metalstack.api.v2.TenantService/RemoveMember": true,
"/metalstack.api.v2.TenantService/Update": true,
- "/metalstack.api.v2.TenantService/UpdateMember": true,
},
Project: map[string]bool{
"/metalstack.api.v2.IPService/Create": true,
@@ -603,16 +629,17 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.NetworkService/List": true,
"/metalstack.api.v2.NetworkService/ListBaseNetworks": true,
"/metalstack.api.v2.NetworkService/Update": true,
- "/metalstack.api.v2.ProjectService/AddMember": true,
+ "/metalstack.api.v2.ProjectMemberService/Create": true,
+ "/metalstack.api.v2.ProjectMemberService/Delete": true,
+ "/metalstack.api.v2.ProjectMemberService/Get": true,
+ "/metalstack.api.v2.ProjectMemberService/List": true,
+ "/metalstack.api.v2.ProjectMemberService/Update": true,
"/metalstack.api.v2.ProjectService/Delete": true,
"/metalstack.api.v2.ProjectService/Get": true,
"/metalstack.api.v2.ProjectService/Invite": true,
"/metalstack.api.v2.ProjectService/InviteDelete": true,
"/metalstack.api.v2.ProjectService/InvitesList": true,
- "/metalstack.api.v2.ProjectService/Leave": true,
- "/metalstack.api.v2.ProjectService/RemoveMember": true,
"/metalstack.api.v2.ProjectService/Update": true,
- "/metalstack.api.v2.ProjectService/UpdateMember": true,
"/metalstack.api.v2.SizeReservationService/Get": true,
"/metalstack.api.v2.SizeReservationService/List": true,
},
@@ -653,8 +680,10 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.PartitionService/Create": true,
"/metalstack.admin.v2.PartitionService/Delete": true,
"/metalstack.admin.v2.PartitionService/Update": true,
+ "/metalstack.admin.v2.ProjectService/AddMember": true,
"/metalstack.admin.v2.ProjectService/Create": true,
"/metalstack.admin.v2.ProjectService/List": false,
+ "/metalstack.admin.v2.ProjectService/RemoveMember": true,
"/metalstack.admin.v2.SizeImageConstraintService/Create": true,
"/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
"/metalstack.admin.v2.SizeImageConstraintService/Get": false,
@@ -717,7 +746,12 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.NetworkService/Update": true,
"/metalstack.api.v2.PartitionService/Get": false,
"/metalstack.api.v2.PartitionService/List": false,
- "/metalstack.api.v2.ProjectService/AddMember": true,
+ "/metalstack.api.v2.ProjectMemberService/Create": true,
+ "/metalstack.api.v2.ProjectMemberService/Delete": true,
+ "/metalstack.api.v2.ProjectMemberService/Get": false,
+ "/metalstack.api.v2.ProjectMemberService/Leave": true,
+ "/metalstack.api.v2.ProjectMemberService/List": false,
+ "/metalstack.api.v2.ProjectMemberService/Update": true,
"/metalstack.api.v2.ProjectService/Create": true,
"/metalstack.api.v2.ProjectService/Delete": true,
"/metalstack.api.v2.ProjectService/Get": false,
@@ -726,17 +760,19 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.ProjectService/InviteDelete": true,
"/metalstack.api.v2.ProjectService/InviteGet": false,
"/metalstack.api.v2.ProjectService/InvitesList": false,
- "/metalstack.api.v2.ProjectService/Leave": true,
"/metalstack.api.v2.ProjectService/List": false,
- "/metalstack.api.v2.ProjectService/RemoveMember": true,
"/metalstack.api.v2.ProjectService/Update": true,
- "/metalstack.api.v2.ProjectService/UpdateMember": true,
"/metalstack.api.v2.SizeImageConstraintService/Try": false,
"/metalstack.api.v2.SizeReservationService/Get": false,
"/metalstack.api.v2.SizeReservationService/List": false,
"/metalstack.api.v2.SizeService/Get": false,
"/metalstack.api.v2.SizeService/List": false,
- "/metalstack.api.v2.TenantService/AddMember": true,
+ "/metalstack.api.v2.TenantMemberService/Create": true,
+ "/metalstack.api.v2.TenantMemberService/Delete": true,
+ "/metalstack.api.v2.TenantMemberService/Get": false,
+ "/metalstack.api.v2.TenantMemberService/Leave": true,
+ "/metalstack.api.v2.TenantMemberService/List": false,
+ "/metalstack.api.v2.TenantMemberService/Update": true,
"/metalstack.api.v2.TenantService/Create": true,
"/metalstack.api.v2.TenantService/Delete": true,
"/metalstack.api.v2.TenantService/Get": false,
@@ -745,11 +781,8 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.TenantService/InviteDelete": true,
"/metalstack.api.v2.TenantService/InviteGet": false,
"/metalstack.api.v2.TenantService/InvitesList": false,
- "/metalstack.api.v2.TenantService/Leave": true,
"/metalstack.api.v2.TenantService/List": false,
- "/metalstack.api.v2.TenantService/RemoveMember": true,
"/metalstack.api.v2.TenantService/Update": true,
- "/metalstack.api.v2.TenantService/UpdateMember": true,
"/metalstack.api.v2.TokenService/Create": true,
"/metalstack.api.v2.TokenService/Get": true,
"/metalstack.api.v2.TokenService/List": true,
diff --git a/js/client.d.ts b/js/client.d.ts
index 1e868edf..d0bfb698 100644
--- a/js/client.d.ts
+++ b/js/client.d.ts
@@ -27,10 +27,12 @@ import { MethodService as Apiv2MethodService } from "./metalstack/api/v2/method_
import { NetworkService as Apiv2NetworkService } from "./metalstack/api/v2/network_pb";
import { PartitionService as Apiv2PartitionService } from "./metalstack/api/v2/partition_pb";
import { ProjectService as Apiv2ProjectService } from "./metalstack/api/v2/project_pb";
+import { ProjectMemberService as Apiv2ProjectMemberService } from "./metalstack/api/v2/project_member_pb";
import { SizeService as Apiv2SizeService } from "./metalstack/api/v2/size_pb";
import { SizeImageConstraintService as Apiv2SizeImageConstraintService } from "./metalstack/api/v2/size_imageconstraint_pb";
import { SizeReservationService as Apiv2SizeReservationService } from "./metalstack/api/v2/size_reservation_pb";
import { TenantService as Apiv2TenantService } from "./metalstack/api/v2/tenant_pb";
+import { TenantMemberService as Apiv2TenantMemberService } from "./metalstack/api/v2/tenant_member_pb";
import { TokenService as Apiv2TokenService } from "./metalstack/api/v2/token_pb";
import { UserService as Apiv2UserService } from "./metalstack/api/v2/user_pb";
import { VersionService as Apiv2VersionService } from "./metalstack/api/v2/version_pb";
@@ -79,10 +81,12 @@ export interface Apiv2 {
network(): ConnectClient;
partition(): ConnectClient;
project(): ConnectClient;
+ projectMember(): ConnectClient;
size(): ConnectClient;
sizeImageConstraint(): ConnectClient;
sizeReservation(): ConnectClient;
tenant(): ConnectClient;
+ tenantMember(): ConnectClient;
token(): ConnectClient;
user(): ConnectClient;
version(): ConnectClient;
diff --git a/js/client.js b/js/client.js
index f04ea75e..3bb94b3b 100644
--- a/js/client.js
+++ b/js/client.js
@@ -37,10 +37,12 @@ import { MethodService as Apiv2MethodService } from "./metalstack/api/v2/method_
import { NetworkService as Apiv2NetworkService } from "./metalstack/api/v2/network_pb";
import { PartitionService as Apiv2PartitionService } from "./metalstack/api/v2/partition_pb";
import { ProjectService as Apiv2ProjectService } from "./metalstack/api/v2/project_pb";
+import { ProjectMemberService as Apiv2ProjectMemberService } from "./metalstack/api/v2/project_member_pb";
import { SizeService as Apiv2SizeService } from "./metalstack/api/v2/size_pb";
import { SizeImageConstraintService as Apiv2SizeImageConstraintService } from "./metalstack/api/v2/size_imageconstraint_pb";
import { SizeReservationService as Apiv2SizeReservationService } from "./metalstack/api/v2/size_reservation_pb";
import { TenantService as Apiv2TenantService } from "./metalstack/api/v2/tenant_pb";
+import { TenantMemberService as Apiv2TenantMemberService } from "./metalstack/api/v2/tenant_member_pb";
import { TokenService as Apiv2TokenService } from "./metalstack/api/v2/token_pb";
import { UserService as Apiv2UserService } from "./metalstack/api/v2/user_pb";
import { VersionService as Apiv2VersionService } from "./metalstack/api/v2/version_pb";
@@ -267,6 +269,12 @@ class Apiv2Impl {
}
return this._project;
}
+ projectMember() {
+ if (!this._projectMember) {
+ this._projectMember = createClient(Apiv2ProjectMemberService, this.transport);
+ }
+ return this._projectMember;
+ }
size() {
if (!this._size) {
this._size = createClient(Apiv2SizeService, this.transport);
@@ -291,6 +299,12 @@ class Apiv2Impl {
}
return this._tenant;
}
+ tenantMember() {
+ if (!this._tenantMember) {
+ this._tenantMember = createClient(Apiv2TenantMemberService, this.transport);
+ }
+ return this._tenantMember;
+ }
token() {
if (!this._token) {
this._token = createClient(Apiv2TokenService, this.transport);
diff --git a/js/client.ts b/js/client.ts
index 1327b1ed..9a9f483f 100755
--- a/js/client.ts
+++ b/js/client.ts
@@ -61,6 +61,8 @@ import { PartitionService as Apiv2PartitionService } from "./metalstack/api/v2/p
import { ProjectService as Apiv2ProjectService } from "./metalstack/api/v2/project_pb";
+import { ProjectMemberService as Apiv2ProjectMemberService } from "./metalstack/api/v2/project_member_pb";
+
import { SizeService as Apiv2SizeService } from "./metalstack/api/v2/size_pb";
import { SizeImageConstraintService as Apiv2SizeImageConstraintService } from "./metalstack/api/v2/size_imageconstraint_pb";
@@ -69,6 +71,8 @@ import { SizeReservationService as Apiv2SizeReservationService } from "./metalst
import { TenantService as Apiv2TenantService } from "./metalstack/api/v2/tenant_pb";
+import { TenantMemberService as Apiv2TenantMemberService } from "./metalstack/api/v2/tenant_member_pb";
+
import { TokenService as Apiv2TokenService } from "./metalstack/api/v2/token_pb";
import { UserService as Apiv2UserService } from "./metalstack/api/v2/user_pb";
@@ -167,6 +171,8 @@ export interface Apiv2 {
project(): ConnectClient;
+ projectMember(): ConnectClient;
+
size(): ConnectClient;
sizeImageConstraint(): ConnectClient;
@@ -175,6 +181,8 @@ export interface Apiv2 {
tenant(): ConnectClient;
+ tenantMember(): ConnectClient;
+
token(): ConnectClient;
user(): ConnectClient;
@@ -460,6 +468,8 @@ class Apiv2Impl implements Apiv2 {
private _project?: ConnectClient;
+ private _projectMember?: ConnectClient;
+
private _size?: ConnectClient;
private _sizeImageConstraint?: ConnectClient;
@@ -468,6 +478,8 @@ class Apiv2Impl implements Apiv2 {
private _tenant?: ConnectClient;
+ private _tenantMember?: ConnectClient;
+
private _token?: ConnectClient;
private _user?: ConnectClient;
@@ -550,6 +562,13 @@ class Apiv2Impl implements Apiv2 {
return this._project;
}
+ projectMember(): ConnectClient {
+ if (!this._projectMember) {
+ this._projectMember = createClient(Apiv2ProjectMemberService, this.transport);
+ }
+ return this._projectMember;
+ }
+
size(): ConnectClient {
if (!this._size) {
this._size = createClient(Apiv2SizeService, this.transport);
@@ -578,6 +597,13 @@ class Apiv2Impl implements Apiv2 {
return this._tenant;
}
+ tenantMember(): ConnectClient {
+ if (!this._tenantMember) {
+ this._tenantMember = createClient(Apiv2TenantMemberService, this.transport);
+ }
+ return this._tenantMember;
+ }
+
token(): ConnectClient {
if (!this._token) {
this._token = createClient(Apiv2TokenService, this.transport);
diff --git a/js/metalstack/admin/v2/project_pb.d.ts b/js/metalstack/admin/v2/project_pb.d.ts
index fcefb817..c0779199 100644
--- a/js/metalstack/admin/v2/project_pb.d.ts
+++ b/js/metalstack/admin/v2/project_pb.d.ts
@@ -1,6 +1,7 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
-import type { Labels } from "../../api/v2/common_pb";
+import type { Labels, ProjectRole } from "../../api/v2/common_pb";
import type { Project, ProjectQuery } from "../../api/v2/project_pb";
+import type { ProjectMember } from "../../api/v2/project_member_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/project.proto.
@@ -108,6 +109,96 @@ export type ProjectServiceCreateResponse = Message<"metalstack.admin.v2.ProjectS
* Use `create(ProjectServiceCreateResponseSchema)` to create a new message.
*/
export declare const ProjectServiceCreateResponseSchema: GenMessage;
+/**
+ * ProjectServiceAddMemberRequest is the request payload for adding a member to a tenant.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceAddMemberRequest
+ */
+export type ProjectServiceAddMemberRequest = Message<"metalstack.admin.v2.ProjectServiceAddMemberRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Login of the member to add.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+ /**
+ * Role to assign to the new member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 3;
+ */
+ role: ProjectRole;
+};
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceAddMemberRequest.
+ * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message.
+ */
+export declare const ProjectServiceAddMemberRequestSchema: GenMessage;
+/**
+ * ProjectServiceAddMemberResponse is the response payload for the add member request.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceAddMemberResponse
+ */
+export type ProjectServiceAddMemberResponse = Message<"metalstack.admin.v2.ProjectServiceAddMemberResponse"> & {
+ /**
+ * Member is the added project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceAddMemberResponse.
+ * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message.
+ */
+export declare const ProjectServiceAddMemberResponseSchema: GenMessage;
+/**
+ * ProjectServiceRemoveMemberRequest is the request payload for removing a member from a project.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceRemoveMemberRequest
+ */
+export type ProjectServiceRemoveMemberRequest = Message<"metalstack.admin.v2.ProjectServiceRemoveMemberRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Login of the member to remove.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceRemoveMemberRequest.
+ * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message.
+ */
+export declare const ProjectServiceRemoveMemberRequestSchema: GenMessage;
+/**
+ * ProjectServiceRemoveMemberResponse is the response payload for the remove member request.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceRemoveMemberResponse
+ */
+export type ProjectServiceRemoveMemberResponse = Message<"metalstack.admin.v2.ProjectServiceRemoveMemberResponse"> & {
+ /**
+ * Member is the removed project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceRemoveMemberResponse.
+ * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message.
+ */
+export declare const ProjectServiceRemoveMemberResponseSchema: GenMessage;
/**
* ProjectService provides project management operations.
*
@@ -134,4 +225,24 @@ export declare const ProjectService: GenService<{
input: typeof ProjectServiceListRequestSchema;
output: typeof ProjectServiceListResponseSchema;
};
+ /**
+ * Add a member to a project.
+ *
+ * @generated from rpc metalstack.admin.v2.ProjectService.AddMember
+ */
+ addMember: {
+ methodKind: "unary";
+ input: typeof ProjectServiceAddMemberRequestSchema;
+ output: typeof ProjectServiceAddMemberResponseSchema;
+ };
+ /**
+ * RemoveMember removes a member from a project.
+ *
+ * @generated from rpc metalstack.admin.v2.ProjectService.RemoveMember
+ */
+ removeMember: {
+ methodKind: "unary";
+ input: typeof ProjectServiceRemoveMemberRequestSchema;
+ output: typeof ProjectServiceRemoveMemberResponseSchema;
+ };
}>;
diff --git a/js/metalstack/admin/v2/project_pb.js b/js/metalstack/admin/v2/project_pb.js
index ec4da74f..e0e1d028 100644
--- a/js/metalstack/admin/v2/project_pb.js
+++ b/js/metalstack/admin/v2/project_pb.js
@@ -6,10 +6,11 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
import { file_metalstack_api_v2_project } from "../../api/v2/project_pb";
+import { file_metalstack_api_v2_project_member } from "../../api/v2/project_member_pb";
/**
* Describes the file metalstack/admin/v2/project.proto.
*/
-export const file_metalstack_admin_v2_project = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiggIKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEiQKCmF2YXRhcl91cmwYBCABKAlCC7pICHIG4LOusQIBSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAGIAQFCDQoLX2F2YXRhcl91cmxCCgoIX3Byb2plY3QiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdDL/AQoOUHJvamVjdFNlcnZpY2USeAoGQ3JlYXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5Qcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDFByb2plY3RQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project]);
+export const file_metalstack_admin_v2_project = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiggIKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEiQKCmF2YXRhcl91cmwYBCABKAlCC7pICHIG4LOusQIBSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAGIAQFCDQoLX2F2YXRhcl91cmxCCgoIX3Byb2plY3QiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCKQAQoeUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQASJTCh9Qcm9qZWN0U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjAKBm1lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiWwohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgEiVgoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRIwCgZtZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyMpAECg5Qcm9qZWN0U2VydmljZRJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCEoEBCglBZGRNZW1iZXISMy5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBo0Lm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBEooBCgxSZW1vdmVNZW1iZXISNi5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo3Lm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBQtABChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIMUHJvamVjdFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project, file_metalstack_api_v2_project_member]);
/**
* Describes the message metalstack.admin.v2.ProjectServiceListRequest.
* Use `create(ProjectServiceListRequestSchema)` to create a new message.
@@ -30,6 +31,26 @@ export const ProjectServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_
* Use `create(ProjectServiceCreateResponseSchema)` to create a new message.
*/
export const ProjectServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 3);
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceAddMemberRequest.
+ * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message.
+ */
+export const ProjectServiceAddMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 4);
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceAddMemberResponse.
+ * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message.
+ */
+export const ProjectServiceAddMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 5);
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceRemoveMemberRequest.
+ * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message.
+ */
+export const ProjectServiceRemoveMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 6);
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceRemoveMemberResponse.
+ * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message.
+ */
+export const ProjectServiceRemoveMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 7);
/**
* ProjectService provides project management operations.
*
diff --git a/js/metalstack/admin/v2/project_pb.ts b/js/metalstack/admin/v2/project_pb.ts
index 1790f8bf..794d13d7 100644
--- a/js/metalstack/admin/v2/project_pb.ts
+++ b/js/metalstack/admin/v2/project_pb.ts
@@ -5,18 +5,20 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
-import type { Labels } from "../../api/v2/common_pb";
+import type { Labels, ProjectRole } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
import type { Project, ProjectQuery } from "../../api/v2/project_pb";
import { file_metalstack_api_v2_project } from "../../api/v2/project_pb";
+import type { ProjectMember } from "../../api/v2/project_member_pb";
+import { file_metalstack_api_v2_project_member } from "../../api/v2/project_member_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/project.proto.
*/
export const file_metalstack_admin_v2_project: GenFile = /*@__PURE__*/
- fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiggIKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEiQKCmF2YXRhcl91cmwYBCABKAlCC7pICHIG4LOusQIBSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAGIAQFCDQoLX2F2YXRhcl91cmxCCgoIX3Byb2plY3QiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdDL/AQoOUHJvamVjdFNlcnZpY2USeAoGQ3JlYXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5Qcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDFByb2plY3RQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project]);
+ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiWgoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIzCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeUgAiAEBQggKBl9xdWVyeSJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiggIKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEiQKCmF2YXRhcl91cmwYBCABKAlCC7pICHIG4LOusQIBSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAGIAQFCDQoLX2F2YXRhcl91cmxCCgoIX3Byb2plY3QiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCKQAQoeUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQASJTCh9Qcm9qZWN0U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjAKBm1lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiWwohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgEiVgoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRIwCgZtZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyMpAECg5Qcm9qZWN0U2VydmljZRJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCEoEBCglBZGRNZW1iZXISMy5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBo0Lm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBEooBCgxSZW1vdmVNZW1iZXISNi5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo3Lm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBQtABChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIMUHJvamVjdFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project, file_metalstack_api_v2_project_member]);
/**
* ProjectServiceListRequest is the request payload for listing projects.
@@ -137,6 +139,111 @@ export type ProjectServiceCreateResponse = Message<"metalstack.admin.v2.ProjectS
export const ProjectServiceCreateResponseSchema: GenMessage = /*@__PURE__*/
messageDesc(file_metalstack_admin_v2_project, 3);
+/**
+ * ProjectServiceAddMemberRequest is the request payload for adding a member to a tenant.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceAddMemberRequest
+ */
+export type ProjectServiceAddMemberRequest = Message<"metalstack.admin.v2.ProjectServiceAddMemberRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * Login of the member to add.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+
+ /**
+ * Role to assign to the new member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 3;
+ */
+ role: ProjectRole;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceAddMemberRequest.
+ * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message.
+ */
+export const ProjectServiceAddMemberRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_project, 4);
+
+/**
+ * ProjectServiceAddMemberResponse is the response payload for the add member request.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceAddMemberResponse
+ */
+export type ProjectServiceAddMemberResponse = Message<"metalstack.admin.v2.ProjectServiceAddMemberResponse"> & {
+ /**
+ * Member is the added project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceAddMemberResponse.
+ * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message.
+ */
+export const ProjectServiceAddMemberResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_project, 5);
+
+/**
+ * ProjectServiceRemoveMemberRequest is the request payload for removing a member from a project.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceRemoveMemberRequest
+ */
+export type ProjectServiceRemoveMemberRequest = Message<"metalstack.admin.v2.ProjectServiceRemoveMemberRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * Login of the member to remove.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceRemoveMemberRequest.
+ * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message.
+ */
+export const ProjectServiceRemoveMemberRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_project, 6);
+
+/**
+ * ProjectServiceRemoveMemberResponse is the response payload for the remove member request.
+ *
+ * @generated from message metalstack.admin.v2.ProjectServiceRemoveMemberResponse
+ */
+export type ProjectServiceRemoveMemberResponse = Message<"metalstack.admin.v2.ProjectServiceRemoveMemberResponse"> & {
+ /**
+ * Member is the removed project member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.ProjectServiceRemoveMemberResponse.
+ * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message.
+ */
+export const ProjectServiceRemoveMemberResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_project, 7);
+
/**
* ProjectService provides project management operations.
*
@@ -163,6 +270,26 @@ export const ProjectService: GenService<{
input: typeof ProjectServiceListRequestSchema;
output: typeof ProjectServiceListResponseSchema;
},
+ /**
+ * Add a member to a project.
+ *
+ * @generated from rpc metalstack.admin.v2.ProjectService.AddMember
+ */
+ addMember: {
+ methodKind: "unary";
+ input: typeof ProjectServiceAddMemberRequestSchema;
+ output: typeof ProjectServiceAddMemberResponseSchema;
+ },
+ /**
+ * RemoveMember removes a member from a project.
+ *
+ * @generated from rpc metalstack.admin.v2.ProjectService.RemoveMember
+ */
+ removeMember: {
+ methodKind: "unary";
+ input: typeof ProjectServiceRemoveMemberRequestSchema;
+ output: typeof ProjectServiceRemoveMemberResponseSchema;
+ },
}> = /*@__PURE__*/
serviceDesc(file_metalstack_admin_v2_project, 0);
diff --git a/js/metalstack/admin/v2/tenant_pb.d.ts b/js/metalstack/admin/v2/tenant_pb.d.ts
index 0f74f7a7..109de883 100644
--- a/js/metalstack/admin/v2/tenant_pb.d.ts
+++ b/js/metalstack/admin/v2/tenant_pb.d.ts
@@ -1,6 +1,7 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import type { Labels, TenantRole } from "../../api/v2/common_pb";
-import type { Tenant, TenantMember, TenantQuery } from "../../api/v2/tenant_pb";
+import type { Tenant, TenantQuery } from "../../api/v2/tenant_pb";
+import type { TenantMember } from "../../api/v2/tenant_member_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/tenant.proto.
@@ -151,11 +152,11 @@ export declare const TenantServiceAddMemberRequestSchema: GenMessage & {
/**
- * TenantMember is the added tenant member.
+ * Member is the added tenant member.
*
- * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1;
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
*/
- tenantMember?: TenantMember | undefined;
+ member?: TenantMember | undefined;
};
/**
* Describes the message metalstack.admin.v2.TenantServiceAddMemberResponse.
@@ -193,11 +194,11 @@ export declare const TenantServiceRemoveMemberRequestSchema: GenMessage & {
/**
- * TenantMember is the removed tenant member.
+ * Member is the removed tenant member.
*
- * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1;
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
*/
- tenantMember?: TenantMember | undefined;
+ member?: TenantMember | undefined;
};
/**
* Describes the message metalstack.admin.v2.TenantServiceRemoveMemberResponse.
diff --git a/js/metalstack/admin/v2/tenant_pb.js b/js/metalstack/admin/v2/tenant_pb.js
index ecf5987b..628af6d4 100644
--- a/js/metalstack/admin/v2/tenant_pb.js
+++ b/js/metalstack/admin/v2/tenant_pb.js
@@ -6,10 +6,11 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb";
+import { file_metalstack_api_v2_tenant_member } from "../../api/v2/tenant_member_pb";
/**
* Describes the file metalstack/admin/v2/tenant.proto.
*/
-export const file_metalstack_admin_v2_tenant = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiKgAgoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIfCgVsb2dpbhgGIAEoCUILukgIcgaQtK6xAgFIA4gBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsQggKBl9sb2dpbiJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5Im0KGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBIWCgluZXh0X3BhZ2UYAiABKARIAIgBAUIMCgpfbmV4dF9wYWdlIpABCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlgKHlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIlwKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASJbCiFUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2USNgoNdGVuYW50X21lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjKGBAoNVGVuYW50U2VydmljZRJ2CgZDcmVhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJxCgRMaXN0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAESfwoJQWRkTWVtYmVyEjIubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBozLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAESiAEKDFJlbW92ZU1lbWJlchI1Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILVGVuYW50UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
+export const file_metalstack_admin_v2_tenant = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiKgAgoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIfCgVsb2dpbhgGIAEoCUILukgIcgaQtK6xAgFIA4gBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsQggKBl9sb2dpbiJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5Im0KGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBIWCgluZXh0X3BhZ2UYAiABKARIAIgBAUIMCgpfbmV4dF9wYWdlIpABCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlEKHlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiXAogVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QSGwoGdGVuYW50GAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBIlQKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyhgQKDVRlbmFudFNlcnZpY2USdgoGQ3JlYXRlEi8ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBowLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAEScQoETGlzdBItLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgBEn8KCUFkZE1lbWJlchIyLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBEogBCgxSZW1vdmVNZW1iZXISNS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjYubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYAULPAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCC1RlbmFudFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant, file_metalstack_api_v2_tenant_member]);
/**
* Describes the message metalstack.admin.v2.TenantServiceCreateRequest.
* Use `create(TenantServiceCreateRequestSchema)` to create a new message.
diff --git a/js/metalstack/admin/v2/tenant_pb.ts b/js/metalstack/admin/v2/tenant_pb.ts
index 5cfe89e5..dab8da90 100644
--- a/js/metalstack/admin/v2/tenant_pb.ts
+++ b/js/metalstack/admin/v2/tenant_pb.ts
@@ -8,15 +8,17 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
import type { Labels, TenantRole } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
-import type { Tenant, TenantMember, TenantQuery } from "../../api/v2/tenant_pb";
+import type { Tenant, TenantQuery } from "../../api/v2/tenant_pb";
import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb";
+import type { TenantMember } from "../../api/v2/tenant_member_pb";
+import { file_metalstack_api_v2_tenant_member } from "../../api/v2/tenant_member_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/tenant.proto.
*/
export const file_metalstack_admin_v2_tenant: GenFile = /*@__PURE__*/
- fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiKgAgoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIfCgVsb2dpbhgGIAEoCUILukgIcgaQtK6xAgFIA4gBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsQggKBl9sb2dpbiJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5Im0KGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBIWCgluZXh0X3BhZ2UYAiABKARIAIgBAUIMCgpfbmV4dF9wYWdlIpABCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlgKHlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIlwKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASJbCiFUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2USNgoNdGVuYW50X21lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjKGBAoNVGVuYW50U2VydmljZRJ2CgZDcmVhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJxCgRMaXN0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAESfwoJQWRkTWVtYmVyEjIubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBozLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAESiAEKDFJlbW92ZU1lbWJlchI1Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILVGVuYW50UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]);
+ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiKgAgoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIfCgVsb2dpbhgGIAEoCUILukgIcgaQtK6xAgFIA4gBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsQggKBl9sb2dpbiJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5Im0KGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBIWCgluZXh0X3BhZ2UYAiABKARIAIgBAUIMCgpfbmV4dF9wYWdlIpABCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlEKHlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiXAogVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QSGwoGdGVuYW50GAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBIlQKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyhgQKDVRlbmFudFNlcnZpY2USdgoGQ3JlYXRlEi8ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBowLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAEScQoETGlzdBItLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgBEn8KCUFkZE1lbWJlchIyLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBEogBCgxSZW1vdmVNZW1iZXISNS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjYubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYAULPAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCC1RlbmFudFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant, file_metalstack_api_v2_tenant_member]);
/**
* TenantServiceCreateRequest is the request payload for creating a tenant.
@@ -186,11 +188,11 @@ export const TenantServiceAddMemberRequestSchema: GenMessage & {
/**
- * TenantMember is the added tenant member.
+ * Member is the added tenant member.
*
- * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1;
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
*/
- tenantMember?: TenantMember | undefined;
+ member?: TenantMember | undefined;
};
/**
@@ -235,11 +237,11 @@ export const TenantServiceRemoveMemberRequestSchema: GenMessage & {
/**
- * TenantMember is the removed tenant member.
+ * Member is the removed tenant member.
*
- * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1;
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
*/
- tenantMember?: TenantMember | undefined;
+ member?: TenantMember | undefined;
};
/**
diff --git a/js/metalstack/api/v2/project_member_pb.d.ts b/js/metalstack/api/v2/project_member_pb.d.ts
new file mode 100644
index 00000000..09776a91
--- /dev/null
+++ b/js/metalstack/api/v2/project_member_pb.d.ts
@@ -0,0 +1,407 @@
+import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import type { Timestamp } from "@bufbuild/protobuf/wkt";
+import type { Meta, ProjectRole, UpdateMeta } from "./common_pb";
+import type { Message } from "@bufbuild/protobuf";
+/**
+ * Describes the file metalstack/api/v2/project_member.proto.
+ */
+export declare const file_metalstack_api_v2_project_member: GenFile;
+/**
+ * ProjectMember defines a user that participates in a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMember
+ */
+export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 1;
+ */
+ member: string;
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 2;
+ */
+ role: ProjectRole;
+ /**
+ * InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
+ * This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
+ * Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members.
+ *
+ * @generated from field: bool inherited_membership = 3;
+ */
+ inheritedMembership: boolean;
+ /**
+ * CreatedAt the date when the member was added to the project.
+ *
+ * @generated from field: google.protobuf.Timestamp created_at = 4;
+ */
+ createdAt?: Timestamp | undefined;
+ /**
+ * Meta for this project member.
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 5;
+ */
+ meta?: Meta | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMember.
+ * Use `create(ProjectMemberSchema)` to create a new message.
+ */
+export declare const ProjectMemberSchema: GenMessage;
+/**
+ * ProjectQuery is used to search projects.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberQuery
+ */
+export type ProjectMemberQuery = Message<"metalstack.api.v2.ProjectMemberQuery"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: optional string member = 1;
+ */
+ member?: string | undefined;
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: optional metalstack.api.v2.ProjectRole role = 2;
+ */
+ role?: ProjectRole | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberQuery.
+ * Use `create(ProjectMemberQuerySchema)` to create a new message.
+ */
+export declare const ProjectMemberQuerySchema: GenMessage;
+/**
+ * ProjectMemberServiceListRequest is the request payload to list all project members.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceListRequest
+ */
+export type ProjectMemberServiceListRequest = Message<"metalstack.api.v2.ProjectMemberServiceListRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Query for projects.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMemberQuery query = 2;
+ */
+ query?: ProjectMemberQuery | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceListRequest.
+ * Use `create(ProjectMemberServiceListRequestSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceListRequestSchema: GenMessage;
+/**
+ * ProjectMemberServiceGetRequest is the request payload to get a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceGetRequest
+ */
+export type ProjectMemberServiceGetRequest = Message<"metalstack.api.v2.ProjectMemberServiceGetRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceGetRequest.
+ * Use `create(ProjectMemberServiceGetRequestSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceGetRequestSchema: GenMessage;
+/**
+ * ProjectMemberServiceCreateRequest is the request payload to Create a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceCreateRequest
+ */
+export type ProjectMemberServiceCreateRequest = Message<"metalstack.api.v2.ProjectMemberServiceCreateRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Login of the member to add.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+ /**
+ * Role to assign to the new member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 3;
+ */
+ role: ProjectRole;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceCreateRequest.
+ * Use `create(ProjectMemberServiceCreateRequestSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceCreateRequestSchema: GenMessage;
+/**
+ * ProjectMemberServiceUpdateRequest is the request payload to update a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceUpdateRequest
+ */
+export type ProjectMemberServiceUpdateRequest = Message<"metalstack.api.v2.ProjectMemberServiceUpdateRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Member is the id of the member to remove from this project.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+ /**
+ * Role is the role in this project the user will get after the update.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 3;
+ */
+ role: ProjectRole;
+ /**
+ * UpdateMeta contains the timestamp and strategy to be used in this update request.
+ *
+ * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 4;
+ */
+ updateMeta?: UpdateMeta | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceUpdateRequest.
+ * Use `create(ProjectMemberServiceUpdateRequestSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceUpdateRequestSchema: GenMessage;
+/**
+ * ProjectMemberServiceDeleteRequest is the request payload to delete a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceDeleteRequest
+ */
+export type ProjectMemberServiceDeleteRequest = Message<"metalstack.api.v2.ProjectMemberServiceDeleteRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Member is the id of the member to remove from this project.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceDeleteRequest.
+ * Use `create(ProjectMemberServiceDeleteRequestSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceDeleteRequestSchema: GenMessage;
+/**
+ * ProjectMemberServiceListResponse is the response payload to list all project members.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceListResponse
+ */
+export type ProjectMemberServiceListResponse = Message<"metalstack.api.v2.ProjectMemberServiceListResponse"> & {
+ /**
+ * Members is a list of project members.
+ *
+ * @generated from field: repeated metalstack.api.v2.ProjectMember members = 1;
+ */
+ members: ProjectMember[];
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceListResponse.
+ * Use `create(ProjectMemberServiceListResponseSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceListResponseSchema: GenMessage;
+/**
+ * ProjectMemberServiceGetResponse is the response payload to get a projects.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceGetResponse
+ */
+export type ProjectMemberServiceGetResponse = Message<"metalstack.api.v2.ProjectMemberServiceGetResponse"> & {
+ /**
+ * Member in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions.
+ *
+ * @generated from field: repeated metalstack.api.v2.ProjectMember member = 1;
+ */
+ member: ProjectMember[];
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceGetResponse.
+ * Use `create(ProjectMemberServiceGetResponseSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceGetResponseSchema: GenMessage;
+/**
+ * ProjectMemberServiceCreateResponse is the response payload to create a project member.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceCreateResponse
+ */
+export type ProjectMemberServiceCreateResponse = Message<"metalstack.api.v2.ProjectMemberServiceCreateResponse"> & {
+ /**
+ * Member is the created project member
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceCreateResponse.
+ * Use `create(ProjectMemberServiceCreateResponseSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceCreateResponseSchema: GenMessage;
+/**
+ * ProjectMemberServiceDeleteResponse is the response payload to delete a project member.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceDeleteResponse
+ */
+export type ProjectMemberServiceDeleteResponse = Message<"metalstack.api.v2.ProjectMemberServiceDeleteResponse"> & {
+ /**
+ * Member is the deleted project member
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceDeleteResponse.
+ * Use `create(ProjectMemberServiceDeleteResponseSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceDeleteResponseSchema: GenMessage;
+/**
+ * ProjectMemberServiceUpdateResponse is the response payload to update a project member.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceUpdateResponse
+ */
+export type ProjectMemberServiceUpdateResponse = Message<"metalstack.api.v2.ProjectMemberServiceUpdateResponse"> & {
+ /**
+ * Member is the updated project member
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceUpdateResponse.
+ * Use `create(ProjectMemberServiceUpdateResponseSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceUpdateResponseSchema: GenMessage;
+/**
+ * ProjectMemberServiceLeaveRequest is used to leave a project. This way a member is not required to ask a project owner to remove him.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceLeaveRequest
+ */
+export type ProjectMemberServiceLeaveRequest = Message<"metalstack.api.v2.ProjectMemberServiceLeaveRequest"> & {
+ /**
+ * Project of the uuid of the project that the user wants to leave.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceLeaveRequest.
+ * Use `create(ProjectMemberServiceLeaveRequestSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceLeaveRequestSchema: GenMessage;
+/**
+ * ProjectMemberServiceLeaveResponse is the response payload to a leave project request.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceLeaveResponse
+ */
+export type ProjectMemberServiceLeaveResponse = Message<"metalstack.api.v2.ProjectMemberServiceLeaveResponse"> & {
+ /**
+ * Member is the member of this project.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceLeaveResponse.
+ * Use `create(ProjectMemberServiceLeaveResponseSchema)` to create a new message.
+ */
+export declare const ProjectMemberServiceLeaveResponseSchema: GenMessage;
+/**
+ * ProjectMemberService provides project management operations.
+ *
+ * @generated from service metalstack.api.v2.ProjectMemberService
+ */
+export declare const ProjectMemberService: GenService<{
+ /**
+ * Returns the list of project members.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.List
+ */
+ list: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceListRequestSchema;
+ output: typeof ProjectMemberServiceListResponseSchema;
+ };
+ /**
+ * Returns the project member of the project.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Get
+ */
+ get: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceGetRequestSchema;
+ output: typeof ProjectMemberServiceGetResponseSchema;
+ };
+ /**
+ * Create a project member.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Create
+ */
+ create: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceCreateRequestSchema;
+ output: typeof ProjectMemberServiceCreateResponseSchema;
+ };
+ /**
+ * Delete a project member.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Delete
+ */
+ delete: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceDeleteRequestSchema;
+ output: typeof ProjectMemberServiceDeleteResponseSchema;
+ };
+ /**
+ * Update a project member.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Update
+ */
+ update: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceUpdateRequestSchema;
+ output: typeof ProjectMemberServiceUpdateResponseSchema;
+ };
+ /**
+ * Leave a project.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Leave
+ */
+ leave: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceLeaveRequestSchema;
+ output: typeof ProjectMemberServiceLeaveResponseSchema;
+ };
+}>;
diff --git a/js/metalstack/api/v2/project_member_pb.js b/js/metalstack/api/v2/project_member_pb.js
new file mode 100644
index 00000000..b967c547
--- /dev/null
+++ b/js/metalstack/api/v2/project_member_pb.js
@@ -0,0 +1,88 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/api/v2/project_member.proto (package metalstack.api.v2, syntax proto3)
+/* eslint-disable */
+import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
+import { file_metalstack_api_v2_common } from "./common_pb";
+import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
+/**
+ * Describes the file metalstack/api/v2/project_member.proto.
+ */
+export const file_metalstack_api_v2_project_member = /*@__PURE__*/ fileDesc("CiZtZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0X21lbWJlci5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIi2QEKDVByb2plY3RNZW1iZXISGwoGbWVtYmVyGAEgASgJQgu6SAhyBpC0rrECARI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIocBChJQcm9qZWN0TWVtYmVyUXVlcnkSIAoGbWVtYmVyGAEgASgJQgu6SAhyBpC0rrECAUgAiAEBEjsKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAFIAYgBAUIJCgdfbWVtYmVyQgcKBV9yb2xlInIKH1Byb2plY3RNZW1iZXJTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESNAoFcXVlcnkYAiABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyUXVlcnkiWAoeUHJvamVjdE1lbWJlclNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgEikwEKIVByb2plY3RNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiwgEKIVByb2plY3RNZW1iZXJTZXJ2aWNlVXBkYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARI6Cgt1cGRhdGVfbWV0YRgEIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBASJOCiFQcm9qZWN0TWVtYmVyU2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJIlUKIFByb2plY3RNZW1iZXJTZXJ2aWNlTGlzdFJlc3BvbnNlEjEKB21lbWJlcnMYASADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIlMKH1Byb2plY3RNZW1iZXJTZXJ2aWNlR2V0UmVzcG9uc2USMAoGbWVtYmVyGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciJWCiJQcm9qZWN0TWVtYmVyU2VydmljZUNyZWF0ZVJlc3BvbnNlEjAKBm1lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiVgoiUHJvamVjdE1lbWJlclNlcnZpY2VEZWxldGVSZXNwb25zZRIwCgZtZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIlYKIlByb2plY3RNZW1iZXJTZXJ2aWNlVXBkYXRlUmVzcG9uc2USMAoGbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciI9CiBQcm9qZWN0TWVtYmVyU2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJVCiFQcm9qZWN0TWVtYmVyU2VydmljZUxlYXZlUmVzcG9uc2USMAoGbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlcjKWBgoUUHJvamVjdE1lbWJlclNlcnZpY2USfAoETGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISeQoDR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISgAEKBkNyZWF0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCcrzGAEB4PMYARKAAQoGRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoABCgZVcGRhdGUSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZVVwZGF0ZVJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnK8xgBAeDzGAESfAoFTGVhdmUSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZUxlYXZlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlTGVhdmVSZXNwb25zZSII2PMYAuDzGAFCyAEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkISUHJvamVjdE1lbWJlclByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+/**
+ * Describes the message metalstack.api.v2.ProjectMember.
+ * Use `create(ProjectMemberSchema)` to create a new message.
+ */
+export const ProjectMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 0);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberQuery.
+ * Use `create(ProjectMemberQuerySchema)` to create a new message.
+ */
+export const ProjectMemberQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 1);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceListRequest.
+ * Use `create(ProjectMemberServiceListRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 2);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceGetRequest.
+ * Use `create(ProjectMemberServiceGetRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 3);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceCreateRequest.
+ * Use `create(ProjectMemberServiceCreateRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 4);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceUpdateRequest.
+ * Use `create(ProjectMemberServiceUpdateRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 5);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceDeleteRequest.
+ * Use `create(ProjectMemberServiceDeleteRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 6);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceListResponse.
+ * Use `create(ProjectMemberServiceListResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 7);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceGetResponse.
+ * Use `create(ProjectMemberServiceGetResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 8);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceCreateResponse.
+ * Use `create(ProjectMemberServiceCreateResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 9);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceDeleteResponse.
+ * Use `create(ProjectMemberServiceDeleteResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 10);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceUpdateResponse.
+ * Use `create(ProjectMemberServiceUpdateResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 11);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceLeaveRequest.
+ * Use `create(ProjectMemberServiceLeaveRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceLeaveRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 12);
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceLeaveResponse.
+ * Use `create(ProjectMemberServiceLeaveResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceLeaveResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project_member, 13);
+/**
+ * ProjectMemberService provides project management operations.
+ *
+ * @generated from service metalstack.api.v2.ProjectMemberService
+ */
+export const ProjectMemberService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_project_member, 0);
diff --git a/js/metalstack/api/v2/project_member_pb.ts b/js/metalstack/api/v2/project_member_pb.ts
new file mode 100644
index 00000000..a409b1d6
--- /dev/null
+++ b/js/metalstack/api/v2/project_member_pb.ts
@@ -0,0 +1,476 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/api/v2/project_member.proto (package metalstack.api.v2, syntax proto3)
+/* eslint-disable */
+
+import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import type { Timestamp } from "@bufbuild/protobuf/wkt";
+import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
+import type { Meta, ProjectRole, UpdateMeta } from "./common_pb";
+import { file_metalstack_api_v2_common } from "./common_pb";
+import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
+import type { Message } from "@bufbuild/protobuf";
+
+/**
+ * Describes the file metalstack/api/v2/project_member.proto.
+ */
+export const file_metalstack_api_v2_project_member: GenFile = /*@__PURE__*/
+ fileDesc("CiZtZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0X21lbWJlci5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIi2QEKDVByb2plY3RNZW1iZXISGwoGbWVtYmVyGAEgASgJQgu6SAhyBpC0rrECARI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIocBChJQcm9qZWN0TWVtYmVyUXVlcnkSIAoGbWVtYmVyGAEgASgJQgu6SAhyBpC0rrECAUgAiAEBEjsKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAFIAYgBAUIJCgdfbWVtYmVyQgcKBV9yb2xlInIKH1Byb2plY3RNZW1iZXJTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESNAoFcXVlcnkYAiABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyUXVlcnkiWAoeUHJvamVjdE1lbWJlclNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgEikwEKIVByb2plY3RNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiwgEKIVByb2plY3RNZW1iZXJTZXJ2aWNlVXBkYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARI6Cgt1cGRhdGVfbWV0YRgEIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBASJOCiFQcm9qZWN0TWVtYmVyU2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJIlUKIFByb2plY3RNZW1iZXJTZXJ2aWNlTGlzdFJlc3BvbnNlEjEKB21lbWJlcnMYASADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIlMKH1Byb2plY3RNZW1iZXJTZXJ2aWNlR2V0UmVzcG9uc2USMAoGbWVtYmVyGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciJWCiJQcm9qZWN0TWVtYmVyU2VydmljZUNyZWF0ZVJlc3BvbnNlEjAKBm1lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiVgoiUHJvamVjdE1lbWJlclNlcnZpY2VEZWxldGVSZXNwb25zZRIwCgZtZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIlYKIlByb2plY3RNZW1iZXJTZXJ2aWNlVXBkYXRlUmVzcG9uc2USMAoGbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciI9CiBQcm9qZWN0TWVtYmVyU2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJVCiFQcm9qZWN0TWVtYmVyU2VydmljZUxlYXZlUmVzcG9uc2USMAoGbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlcjKWBgoUUHJvamVjdE1lbWJlclNlcnZpY2USfAoETGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISeQoDR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISgAEKBkNyZWF0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCcrzGAEB4PMYARKAAQoGRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlclNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoABCgZVcGRhdGUSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZVVwZGF0ZVJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnK8xgBAeDzGAESfAoFTGVhdmUSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyU2VydmljZUxlYXZlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXJTZXJ2aWNlTGVhdmVSZXNwb25zZSII2PMYAuDzGAFCyAEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkISUHJvamVjdE1lbWJlclByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+
+/**
+ * ProjectMember defines a user that participates in a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMember
+ */
+export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 1;
+ */
+ member: string;
+
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 2;
+ */
+ role: ProjectRole;
+
+ /**
+ * InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
+ * This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
+ * Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members.
+ *
+ * @generated from field: bool inherited_membership = 3;
+ */
+ inheritedMembership: boolean;
+
+ /**
+ * CreatedAt the date when the member was added to the project.
+ *
+ * @generated from field: google.protobuf.Timestamp created_at = 4;
+ */
+ createdAt?: Timestamp | undefined;
+
+ /**
+ * Meta for this project member.
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 5;
+ */
+ meta?: Meta | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMember.
+ * Use `create(ProjectMemberSchema)` to create a new message.
+ */
+export const ProjectMemberSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 0);
+
+/**
+ * ProjectQuery is used to search projects.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberQuery
+ */
+export type ProjectMemberQuery = Message<"metalstack.api.v2.ProjectMemberQuery"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: optional string member = 1;
+ */
+ member?: string | undefined;
+
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: optional metalstack.api.v2.ProjectRole role = 2;
+ */
+ role?: ProjectRole | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberQuery.
+ * Use `create(ProjectMemberQuerySchema)` to create a new message.
+ */
+export const ProjectMemberQuerySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 1);
+
+/**
+ * ProjectMemberServiceListRequest is the request payload to list all project members.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceListRequest
+ */
+export type ProjectMemberServiceListRequest = Message<"metalstack.api.v2.ProjectMemberServiceListRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * Query for projects.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMemberQuery query = 2;
+ */
+ query?: ProjectMemberQuery | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceListRequest.
+ * Use `create(ProjectMemberServiceListRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceListRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 2);
+
+/**
+ * ProjectMemberServiceGetRequest is the request payload to get a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceGetRequest
+ */
+export type ProjectMemberServiceGetRequest = Message<"metalstack.api.v2.ProjectMemberServiceGetRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceGetRequest.
+ * Use `create(ProjectMemberServiceGetRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceGetRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 3);
+
+/**
+ * ProjectMemberServiceCreateRequest is the request payload to Create a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceCreateRequest
+ */
+export type ProjectMemberServiceCreateRequest = Message<"metalstack.api.v2.ProjectMemberServiceCreateRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * Login of the member to add.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+
+ /**
+ * Role to assign to the new member.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 3;
+ */
+ role: ProjectRole;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceCreateRequest.
+ * Use `create(ProjectMemberServiceCreateRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceCreateRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 4);
+
+/**
+ * ProjectMemberServiceUpdateRequest is the request payload to update a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceUpdateRequest
+ */
+export type ProjectMemberServiceUpdateRequest = Message<"metalstack.api.v2.ProjectMemberServiceUpdateRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * Member is the id of the member to remove from this project.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+
+ /**
+ * Role is the role in this project the user will get after the update.
+ *
+ * @generated from field: metalstack.api.v2.ProjectRole role = 3;
+ */
+ role: ProjectRole;
+
+ /**
+ * UpdateMeta contains the timestamp and strategy to be used in this update request.
+ *
+ * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 4;
+ */
+ updateMeta?: UpdateMeta | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceUpdateRequest.
+ * Use `create(ProjectMemberServiceUpdateRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 5);
+
+/**
+ * ProjectMemberServiceDeleteRequest is the request payload to delete a project.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceDeleteRequest
+ */
+export type ProjectMemberServiceDeleteRequest = Message<"metalstack.api.v2.ProjectMemberServiceDeleteRequest"> & {
+ /**
+ * Project is the uuid of the project.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+
+ /**
+ * Member is the id of the member to remove from this project.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceDeleteRequest.
+ * Use `create(ProjectMemberServiceDeleteRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 6);
+
+/**
+ * ProjectMemberServiceListResponse is the response payload to list all project members.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceListResponse
+ */
+export type ProjectMemberServiceListResponse = Message<"metalstack.api.v2.ProjectMemberServiceListResponse"> & {
+ /**
+ * Members is a list of project members.
+ *
+ * @generated from field: repeated metalstack.api.v2.ProjectMember members = 1;
+ */
+ members: ProjectMember[];
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceListResponse.
+ * Use `create(ProjectMemberServiceListResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceListResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 7);
+
+/**
+ * ProjectMemberServiceGetResponse is the response payload to get a projects.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceGetResponse
+ */
+export type ProjectMemberServiceGetResponse = Message<"metalstack.api.v2.ProjectMemberServiceGetResponse"> & {
+ /**
+ * Member in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions.
+ *
+ * @generated from field: repeated metalstack.api.v2.ProjectMember member = 1;
+ */
+ member: ProjectMember[];
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceGetResponse.
+ * Use `create(ProjectMemberServiceGetResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceGetResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 8);
+
+/**
+ * ProjectMemberServiceCreateResponse is the response payload to create a project member.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceCreateResponse
+ */
+export type ProjectMemberServiceCreateResponse = Message<"metalstack.api.v2.ProjectMemberServiceCreateResponse"> & {
+ /**
+ * Member is the created project member
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceCreateResponse.
+ * Use `create(ProjectMemberServiceCreateResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceCreateResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 9);
+
+/**
+ * ProjectMemberServiceDeleteResponse is the response payload to delete a project member.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceDeleteResponse
+ */
+export type ProjectMemberServiceDeleteResponse = Message<"metalstack.api.v2.ProjectMemberServiceDeleteResponse"> & {
+ /**
+ * Member is the deleted project member
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceDeleteResponse.
+ * Use `create(ProjectMemberServiceDeleteResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 10);
+
+/**
+ * ProjectMemberServiceUpdateResponse is the response payload to update a project member.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceUpdateResponse
+ */
+export type ProjectMemberServiceUpdateResponse = Message<"metalstack.api.v2.ProjectMemberServiceUpdateResponse"> & {
+ /**
+ * Member is the updated project member
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceUpdateResponse.
+ * Use `create(ProjectMemberServiceUpdateResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 11);
+
+/**
+ * ProjectMemberServiceLeaveRequest is used to leave a project. This way a member is not required to ask a project owner to remove him.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceLeaveRequest
+ */
+export type ProjectMemberServiceLeaveRequest = Message<"metalstack.api.v2.ProjectMemberServiceLeaveRequest"> & {
+ /**
+ * Project of the uuid of the project that the user wants to leave.
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceLeaveRequest.
+ * Use `create(ProjectMemberServiceLeaveRequestSchema)` to create a new message.
+ */
+export const ProjectMemberServiceLeaveRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 12);
+
+/**
+ * ProjectMemberServiceLeaveResponse is the response payload to a leave project request.
+ *
+ * @generated from message metalstack.api.v2.ProjectMemberServiceLeaveResponse
+ */
+export type ProjectMemberServiceLeaveResponse = Message<"metalstack.api.v2.ProjectMemberServiceLeaveResponse"> & {
+ /**
+ * Member is the member of this project.
+ *
+ * @generated from field: metalstack.api.v2.ProjectMember member = 1;
+ */
+ member?: ProjectMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ProjectMemberServiceLeaveResponse.
+ * Use `create(ProjectMemberServiceLeaveResponseSchema)` to create a new message.
+ */
+export const ProjectMemberServiceLeaveResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_project_member, 13);
+
+/**
+ * ProjectMemberService provides project management operations.
+ *
+ * @generated from service metalstack.api.v2.ProjectMemberService
+ */
+export const ProjectMemberService: GenService<{
+ /**
+ * Returns the list of project members.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.List
+ */
+ list: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceListRequestSchema;
+ output: typeof ProjectMemberServiceListResponseSchema;
+ },
+ /**
+ * Returns the project member of the project.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Get
+ */
+ get: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceGetRequestSchema;
+ output: typeof ProjectMemberServiceGetResponseSchema;
+ },
+ /**
+ * Create a project member.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Create
+ */
+ create: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceCreateRequestSchema;
+ output: typeof ProjectMemberServiceCreateResponseSchema;
+ },
+ /**
+ * Delete a project member.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Delete
+ */
+ delete: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceDeleteRequestSchema;
+ output: typeof ProjectMemberServiceDeleteResponseSchema;
+ },
+ /**
+ * Update a project member.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Update
+ */
+ update: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceUpdateRequestSchema;
+ output: typeof ProjectMemberServiceUpdateResponseSchema;
+ },
+ /**
+ * Leave a project.
+ *
+ * @generated from rpc metalstack.api.v2.ProjectMemberService.Leave
+ */
+ leave: {
+ methodKind: "unary";
+ input: typeof ProjectMemberServiceLeaveRequestSchema;
+ output: typeof ProjectMemberServiceLeaveResponseSchema;
+ },
+}> = /*@__PURE__*/
+ serviceDesc(file_metalstack_api_v2_project_member, 0);
+
diff --git a/js/metalstack/api/v2/project_pb.d.ts b/js/metalstack/api/v2/project_pb.d.ts
index 4f0ab575..6e37bd92 100644
--- a/js/metalstack/api/v2/project_pb.d.ts
+++ b/js/metalstack/api/v2/project_pb.d.ts
@@ -55,50 +55,6 @@ export type Project = Message<"metalstack.api.v2.Project"> & {
* Use `create(ProjectSchema)` to create a new message.
*/
export declare const ProjectSchema: GenMessage;
-/**
- * ProjectMember defines a user that participates in a project.
- *
- * @generated from message metalstack.api.v2.ProjectMember
- */
-export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & {
- /**
- * Id is the user id of the member.
- *
- * @generated from field: string id = 1;
- */
- id: string;
- /**
- * Role is the role of the member.
- *
- * @generated from field: metalstack.api.v2.ProjectRole role = 2;
- */
- role: ProjectRole;
- /**
- * InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
- * This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
- * Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members.
- *
- * @generated from field: bool inherited_membership = 3;
- */
- inheritedMembership: boolean;
- /**
- * CreatedAt the date when the member was added to the project.
- *
- * @generated from field: google.protobuf.Timestamp created_at = 4;
- */
- createdAt?: Timestamp | undefined;
- /**
- * Meta for this project member.
- *
- * @generated from field: metalstack.api.v2.Meta meta = 5;
- */
- meta?: Meta | undefined;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectMember.
- * Use `create(ProjectMemberSchema)` to create a new message.
- */
-export declare const ProjectMemberSchema: GenMessage;
/**
* ProjectInvite defines invite to project.
*
@@ -267,12 +223,6 @@ export type ProjectServiceGetResponse = Message<"metalstack.api.v2.ProjectServic
* @generated from field: metalstack.api.v2.Project project = 1;
*/
project?: Project | undefined;
- /**
- * ProjectMembers in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions.
- *
- * @generated from field: repeated metalstack.api.v2.ProjectMember project_members = 2;
- */
- projectMembers: ProjectMember[];
};
/**
* Describes the message metalstack.api.v2.ProjectServiceGetResponse.
@@ -558,173 +508,6 @@ export type ProjectServiceInviteGetResponse = Message<"metalstack.api.v2.Project
* Use `create(ProjectServiceInviteGetResponseSchema)` to create a new message.
*/
export declare const ProjectServiceInviteGetResponseSchema: GenMessage;
-/**
- * ProjectServiceLeaveRequest is used to leave a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceLeaveRequest
- */
-export type ProjectServiceLeaveRequest = Message<"metalstack.api.v2.ProjectServiceLeaveRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceLeaveRequest.
- * Use `create(ProjectServiceLeaveRequestSchema)` to create a new message.
- */
-export declare const ProjectServiceLeaveRequestSchema: GenMessage;
-/**
- * ProjectServiceLeaveResponse is the response payload to a leave project request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceLeaveResponse
- */
-export type ProjectServiceLeaveResponse = Message<"metalstack.api.v2.ProjectServiceLeaveResponse"> & {};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceLeaveResponse.
- * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message.
- */
-export declare const ProjectServiceLeaveResponseSchema: GenMessage;
-/**
- * ProjectServiceAddMemberRequest is the request payload for adding a member to a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceAddMemberRequest
- */
-export type ProjectServiceAddMemberRequest = Message<"metalstack.api.v2.ProjectServiceAddMemberRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
- /**
- * Login of the member to add.
- *
- * @generated from field: string member = 2;
- */
- member: string;
- /**
- * Role to assign to the new member.
- *
- * @generated from field: metalstack.api.v2.ProjectRole role = 3;
- */
- role: ProjectRole;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceAddMemberRequest.
- * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message.
- */
-export declare const ProjectServiceAddMemberRequestSchema: GenMessage;
-/**
- * ProjectServiceAddMemberResponse is the response payload for the add member request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceAddMemberResponse
- */
-export type ProjectServiceAddMemberResponse = Message<"metalstack.api.v2.ProjectServiceAddMemberResponse"> & {
- /**
- * ProjectMember is the added project member.
- *
- * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
- */
- projectMember?: ProjectMember | undefined;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceAddMemberResponse.
- * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message.
- */
-export declare const ProjectServiceAddMemberResponseSchema: GenMessage;
-/**
- * ProjectServiceRemoveMemberRequest is used to remove a member from a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberRequest
- */
-export type ProjectServiceRemoveMemberRequest = Message<"metalstack.api.v2.ProjectServiceRemoveMemberRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
- /**
- * Member is the id of the member to remove from this project.
- *
- * @generated from field: string member = 2;
- */
- member: string;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberRequest.
- * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message.
- */
-export declare const ProjectServiceRemoveMemberRequestSchema: GenMessage;
-/**
- * ProjectServiceRemoveMemberResponse is the response payload to a remove member request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberResponse
- */
-export type ProjectServiceRemoveMemberResponse = Message<"metalstack.api.v2.ProjectServiceRemoveMemberResponse"> & {
- /**
- * ProjectMember is the removed project member.
- *
- * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
- */
- projectMember?: ProjectMember | undefined;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse.
- * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message.
- */
-export declare const ProjectServiceRemoveMemberResponseSchema: GenMessage;
-/**
- * ProjectServiceUpdateMemberRequest is used to update a member of a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberRequest
- */
-export type ProjectServiceUpdateMemberRequest = Message<"metalstack.api.v2.ProjectServiceUpdateMemberRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
- /**
- * Member is the id of the member to remove from this project.
- *
- * @generated from field: string member = 2;
- */
- member: string;
- /**
- * Role is the role in this project the user will get after the update.
- *
- * @generated from field: metalstack.api.v2.ProjectRole role = 3;
- */
- role: ProjectRole;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberRequest.
- * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message.
- */
-export declare const ProjectServiceUpdateMemberRequestSchema: GenMessage;
-/**
- * ProjectServiceUpdateMemberResponse is the response payload to a update member request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberResponse
- */
-export type ProjectServiceUpdateMemberResponse = Message<"metalstack.api.v2.ProjectServiceUpdateMemberResponse"> & {
- /**
- * ProjectMember is the updated project member.
- *
- * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
- */
- projectMember?: ProjectMember | undefined;
-};
-/**
- * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberResponse.
- * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message.
- */
-export declare const ProjectServiceUpdateMemberResponseSchema: GenMessage;
/**
* ProjectServiceInviteAcceptRequest is the request payload to a accept invite request.
*
@@ -858,46 +641,6 @@ export declare const ProjectService: GenService<{
input: typeof ProjectServiceUpdateRequestSchema;
output: typeof ProjectServiceUpdateResponseSchema;
};
- /**
- * Leave project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.Leave
- */
- leave: {
- methodKind: "unary";
- input: typeof ProjectServiceLeaveRequestSchema;
- output: typeof ProjectServiceLeaveResponseSchema;
- };
- /**
- * AddMember adds a user to a project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.AddMember
- */
- addMember: {
- methodKind: "unary";
- input: typeof ProjectServiceAddMemberRequestSchema;
- output: typeof ProjectServiceAddMemberResponseSchema;
- };
- /**
- * RemoveMember removes a user from a project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.RemoveMember
- */
- removeMember: {
- methodKind: "unary";
- input: typeof ProjectServiceRemoveMemberRequestSchema;
- output: typeof ProjectServiceRemoveMemberResponseSchema;
- };
- /**
- * UpdateMember updates a user for a project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.UpdateMember
- */
- updateMember: {
- methodKind: "unary";
- input: typeof ProjectServiceUpdateMemberRequestSchema;
- output: typeof ProjectServiceUpdateMemberResponseSchema;
- };
/**
* Invite a user to a project.
*
diff --git a/js/metalstack/api/v2/project_pb.js b/js/metalstack/api/v2/project_pb.js
index fa448bac..440d320f 100644
--- a/js/metalstack/api/v2/project_pb.js
+++ b/js/metalstack/api/v2/project_pb.js
@@ -9,167 +9,122 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/project.proto.
*/
-export const file_metalstack_api_v2_project = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWwofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSJeCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlEjgKDnByb2plY3RfbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_project = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCKSAgoNUHJvamVjdEludml0ZRIOCgZzZWNyZXQYASABKAkSDwoHcHJvamVjdBgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEg4KBmpvaW5lZBgEIAEoCBIUCgxwcm9qZWN0X25hbWUYBSABKAkSDgoGdGVuYW50GAYgASgJEhMKC3RlbmFudF9uYW1lGAcgASgJEi4KCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWpvaW5lZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiSwoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIuCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeSLFAQoMUHJvamVjdFF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGkLSusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQFCBwoFX3V1aWRCBwoFX25hbWVCCQoHX3RlbmFudEIJCgdfbGFiZWxzIkoKGlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCHByb2plY3RzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI1ChhQcm9qZWN0U2VydmljZUdldFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSAoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCLWAQobUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBsCzrrECARIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgESJAoKYXZhdGFyX3VybBgEIAEoCUILukgIcgbgs66xAgFIAIgBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDQoLX2F2YXRhcl91cmwiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSwocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCLKAgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESJAoKYXZhdGFyX3VybBgFIAEoCUILukgIcgbgs66xAgFIAogBARI0CgZsYWJlbHMYBiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIA4gBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDQoLX2F2YXRhcl91cmxCCQoHX2xhYmVscyJLChxQcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0InAKG1Byb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIlAKHFByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI9CiBQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJWCiFQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMQoHaW52aXRlcxgBIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiMAoeUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJTCh9Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlEjAKBmludml0ZRgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLdCQoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJ0CgZJbnZpdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlc3BvbnNlIgnK8xgBAeDzGAEShQEKDEludml0ZUFjY2VwdBI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGALg8xgBEoYBCgxJbnZpdGVEZWxldGUSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESgwEKC0ludml0ZXNMaXN0EjMubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2UiCcrzGAEB4PMYAhJ8CglJbnZpdGVHZXQSMS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QaMi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgC4PMYAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxQcm9qZWN0UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* Describes the message metalstack.api.v2.Project.
* Use `create(ProjectSchema)` to create a new message.
*/
export const ProjectSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 0);
-/**
- * Describes the message metalstack.api.v2.ProjectMember.
- * Use `create(ProjectMemberSchema)` to create a new message.
- */
-export const ProjectMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 1);
/**
* Describes the message metalstack.api.v2.ProjectInvite.
* Use `create(ProjectInviteSchema)` to create a new message.
*/
-export const ProjectInviteSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 2);
+export const ProjectInviteSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 1);
/**
* Describes the message metalstack.api.v2.ProjectServiceListRequest.
* Use `create(ProjectServiceListRequestSchema)` to create a new message.
*/
-export const ProjectServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 3);
+export const ProjectServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 2);
/**
* Describes the message metalstack.api.v2.ProjectQuery.
* Use `create(ProjectQuerySchema)` to create a new message.
*/
-export const ProjectQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 4);
+export const ProjectQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 3);
/**
* Describes the message metalstack.api.v2.ProjectServiceListResponse.
* Use `create(ProjectServiceListResponseSchema)` to create a new message.
*/
-export const ProjectServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 5);
+export const ProjectServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 4);
/**
* Describes the message metalstack.api.v2.ProjectServiceGetRequest.
* Use `create(ProjectServiceGetRequestSchema)` to create a new message.
*/
-export const ProjectServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 6);
+export const ProjectServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 5);
/**
* Describes the message metalstack.api.v2.ProjectServiceGetResponse.
* Use `create(ProjectServiceGetResponseSchema)` to create a new message.
*/
-export const ProjectServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 7);
+export const ProjectServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 6);
/**
* Describes the message metalstack.api.v2.ProjectServiceCreateRequest.
* Use `create(ProjectServiceCreateRequestSchema)` to create a new message.
*/
-export const ProjectServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 8);
+export const ProjectServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 7);
/**
* Describes the message metalstack.api.v2.ProjectServiceCreateResponse.
* Use `create(ProjectServiceCreateResponseSchema)` to create a new message.
*/
-export const ProjectServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 9);
+export const ProjectServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 8);
/**
* Describes the message metalstack.api.v2.ProjectServiceDeleteRequest.
* Use `create(ProjectServiceDeleteRequestSchema)` to create a new message.
*/
-export const ProjectServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 10);
+export const ProjectServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 9);
/**
* Describes the message metalstack.api.v2.ProjectServiceDeleteResponse.
* Use `create(ProjectServiceDeleteResponseSchema)` to create a new message.
*/
-export const ProjectServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 11);
+export const ProjectServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 10);
/**
* Describes the message metalstack.api.v2.ProjectServiceUpdateRequest.
* Use `create(ProjectServiceUpdateRequestSchema)` to create a new message.
*/
-export const ProjectServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 12);
+export const ProjectServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 11);
/**
* Describes the message metalstack.api.v2.ProjectServiceUpdateResponse.
* Use `create(ProjectServiceUpdateResponseSchema)` to create a new message.
*/
-export const ProjectServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 13);
+export const ProjectServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 12);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteRequest.
* Use `create(ProjectServiceInviteRequestSchema)` to create a new message.
*/
-export const ProjectServiceInviteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 14);
+export const ProjectServiceInviteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 13);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteResponse.
* Use `create(ProjectServiceInviteResponseSchema)` to create a new message.
*/
-export const ProjectServiceInviteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 15);
+export const ProjectServiceInviteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 14);
/**
* Describes the message metalstack.api.v2.ProjectServiceInvitesListRequest.
* Use `create(ProjectServiceInvitesListRequestSchema)` to create a new message.
*/
-export const ProjectServiceInvitesListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 16);
+export const ProjectServiceInvitesListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 15);
/**
* Describes the message metalstack.api.v2.ProjectServiceInvitesListResponse.
* Use `create(ProjectServiceInvitesListResponseSchema)` to create a new message.
*/
-export const ProjectServiceInvitesListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 17);
+export const ProjectServiceInvitesListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 16);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteGetRequest.
* Use `create(ProjectServiceInviteGetRequestSchema)` to create a new message.
*/
-export const ProjectServiceInviteGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 18);
+export const ProjectServiceInviteGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 17);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteGetResponse.
* Use `create(ProjectServiceInviteGetResponseSchema)` to create a new message.
*/
-export const ProjectServiceInviteGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 19);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceLeaveRequest.
- * Use `create(ProjectServiceLeaveRequestSchema)` to create a new message.
- */
-export const ProjectServiceLeaveRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 20);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceLeaveResponse.
- * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message.
- */
-export const ProjectServiceLeaveResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 21);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceAddMemberRequest.
- * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message.
- */
-export const ProjectServiceAddMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 22);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceAddMemberResponse.
- * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message.
- */
-export const ProjectServiceAddMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 23);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberRequest.
- * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message.
- */
-export const ProjectServiceRemoveMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 24);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse.
- * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message.
- */
-export const ProjectServiceRemoveMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 25);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberRequest.
- * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message.
- */
-export const ProjectServiceUpdateMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 26);
-/**
- * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberResponse.
- * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message.
- */
-export const ProjectServiceUpdateMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 27);
+export const ProjectServiceInviteGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 18);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteAcceptRequest.
* Use `create(ProjectServiceInviteAcceptRequestSchema)` to create a new message.
*/
-export const ProjectServiceInviteAcceptRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 28);
+export const ProjectServiceInviteAcceptRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 19);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteAcceptResponse.
* Use `create(ProjectServiceInviteAcceptResponseSchema)` to create a new message.
*/
-export const ProjectServiceInviteAcceptResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 29);
+export const ProjectServiceInviteAcceptResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 20);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteDeleteRequest.
* Use `create(ProjectServiceInviteDeleteRequestSchema)` to create a new message.
*/
-export const ProjectServiceInviteDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 30);
+export const ProjectServiceInviteDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 21);
/**
* Describes the message metalstack.api.v2.ProjectServiceInviteDeleteResponse.
* Use `create(ProjectServiceInviteDeleteResponseSchema)` to create a new message.
*/
-export const ProjectServiceInviteDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 31);
+export const ProjectServiceInviteDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 22);
/**
* ProjectService provides project management operations.
*
diff --git a/js/metalstack/api/v2/project_pb.ts b/js/metalstack/api/v2/project_pb.ts
index f4c5eaea..10c4e014 100644
--- a/js/metalstack/api/v2/project_pb.ts
+++ b/js/metalstack/api/v2/project_pb.ts
@@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/project.proto.
*/
export const file_metalstack_api_v2_project: GenFile = /*@__PURE__*/
- fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWwofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSJeCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlEjgKDnByb2plY3RfbWVtYmVyGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCKSAgoNUHJvamVjdEludml0ZRIOCgZzZWNyZXQYASABKAkSDwoHcHJvamVjdBgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEg4KBmpvaW5lZBgEIAEoCBIUCgxwcm9qZWN0X25hbWUYBSABKAkSDgoGdGVuYW50GAYgASgJEhMKC3RlbmFudF9uYW1lGAcgASgJEi4KCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWpvaW5lZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiSwoZUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBIuCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RRdWVyeSLFAQoMUHJvamVjdFF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGkLSusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQFCBwoFX3V1aWRCBwoFX25hbWVCCQoHX3RlbmFudEIJCgdfbGFiZWxzIkoKGlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCHByb2plY3RzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI1ChhQcm9qZWN0U2VydmljZUdldFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSAoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCLWAQobUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBsCzrrECARIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgESJAoKYXZhdGFyX3VybBgEIAEoCUILukgIcgbgs66xAgFIAIgBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDQoLX2F2YXRhcl91cmwiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSwocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCLKAgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESJAoKYXZhdGFyX3VybBgFIAEoCUILukgIcgbgs66xAgFIAogBARI0CgZsYWJlbHMYBiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIA4gBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDQoLX2F2YXRhcl91cmxCCQoHX2xhYmVscyJLChxQcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0InAKG1Byb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIlAKHFByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI9CiBQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJWCiFQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMQoHaW52aXRlcxgBIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiMAoeUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJTCh9Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlEjAKBmludml0ZRgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLdCQoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJ0CgZJbnZpdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlc3BvbnNlIgnK8xgBAeDzGAEShQEKDEludml0ZUFjY2VwdBI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGALg8xgBEoYBCgxJbnZpdGVEZWxldGUSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESgwEKC0ludml0ZXNMaXN0EjMubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2UiCcrzGAEB4PMYAhJ8CglJbnZpdGVHZXQSMS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QaMi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgC4PMYAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxQcm9qZWN0UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* Project defines a group of resources belonging to a tenant.
@@ -75,57 +75,6 @@ export type Project = Message<"metalstack.api.v2.Project"> & {
export const ProjectSchema: GenMessage = /*@__PURE__*/
messageDesc(file_metalstack_api_v2_project, 0);
-/**
- * ProjectMember defines a user that participates in a project.
- *
- * @generated from message metalstack.api.v2.ProjectMember
- */
-export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & {
- /**
- * Id is the user id of the member.
- *
- * @generated from field: string id = 1;
- */
- id: string;
-
- /**
- * Role is the role of the member.
- *
- * @generated from field: metalstack.api.v2.ProjectRole role = 2;
- */
- role: ProjectRole;
-
- /**
- * InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant.
- * This member does not have direct project membership but gains permissions on this project from the role he has in the tenant.
- * Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members.
- *
- * @generated from field: bool inherited_membership = 3;
- */
- inheritedMembership: boolean;
-
- /**
- * CreatedAt the date when the member was added to the project.
- *
- * @generated from field: google.protobuf.Timestamp created_at = 4;
- */
- createdAt?: Timestamp | undefined;
-
- /**
- * Meta for this project member.
- *
- * @generated from field: metalstack.api.v2.Meta meta = 5;
- */
- meta?: Meta | undefined;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectMember.
- * Use `create(ProjectMemberSchema)` to create a new message.
- */
-export const ProjectMemberSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 1);
-
/**
* ProjectInvite defines invite to project.
*
@@ -201,7 +150,7 @@ export type ProjectInvite = Message<"metalstack.api.v2.ProjectInvite"> & {
* Use `create(ProjectInviteSchema)` to create a new message.
*/
export const ProjectInviteSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 2);
+ messageDesc(file_metalstack_api_v2_project, 1);
/**
* ProjectServiceListRequest is the request payload to list all projects.
@@ -222,7 +171,7 @@ export type ProjectServiceListRequest = Message<"metalstack.api.v2.ProjectServic
* Use `create(ProjectServiceListRequestSchema)` to create a new message.
*/
export const ProjectServiceListRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 3);
+ messageDesc(file_metalstack_api_v2_project, 2);
/**
* ProjectQuery is used to search projects.
@@ -264,7 +213,7 @@ export type ProjectQuery = Message<"metalstack.api.v2.ProjectQuery"> & {
* Use `create(ProjectQuerySchema)` to create a new message.
*/
export const ProjectQuerySchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 4);
+ messageDesc(file_metalstack_api_v2_project, 3);
/**
* ProjectServiceListResponse is the response payload to list all projects.
@@ -285,7 +234,7 @@ export type ProjectServiceListResponse = Message<"metalstack.api.v2.ProjectServi
* Use `create(ProjectServiceListResponseSchema)` to create a new message.
*/
export const ProjectServiceListResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 5);
+ messageDesc(file_metalstack_api_v2_project, 4);
/**
* ProjectServiceGetRequest is the request payload to get a project.
@@ -306,7 +255,7 @@ export type ProjectServiceGetRequest = Message<"metalstack.api.v2.ProjectService
* Use `create(ProjectServiceGetRequestSchema)` to create a new message.
*/
export const ProjectServiceGetRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 6);
+ messageDesc(file_metalstack_api_v2_project, 5);
/**
* ProjectServiceGetResponse is the response payload to get a projects.
@@ -320,13 +269,6 @@ export type ProjectServiceGetResponse = Message<"metalstack.api.v2.ProjectServic
* @generated from field: metalstack.api.v2.Project project = 1;
*/
project?: Project | undefined;
-
- /**
- * ProjectMembers in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions.
- *
- * @generated from field: repeated metalstack.api.v2.ProjectMember project_members = 2;
- */
- projectMembers: ProjectMember[];
};
/**
@@ -334,7 +276,7 @@ export type ProjectServiceGetResponse = Message<"metalstack.api.v2.ProjectServic
* Use `create(ProjectServiceGetResponseSchema)` to create a new message.
*/
export const ProjectServiceGetResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 7);
+ messageDesc(file_metalstack_api_v2_project, 6);
/**
* ProjectServiceCreateRequest is the request payload to Create a project.
@@ -384,7 +326,7 @@ export type ProjectServiceCreateRequest = Message<"metalstack.api.v2.ProjectServ
* Use `create(ProjectServiceCreateRequestSchema)` to create a new message.
*/
export const ProjectServiceCreateRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 8);
+ messageDesc(file_metalstack_api_v2_project, 7);
/**
* ProjectServiceCreateResponse is the response payload of creation of a project.
@@ -405,7 +347,7 @@ export type ProjectServiceCreateResponse = Message<"metalstack.api.v2.ProjectSer
* Use `create(ProjectServiceCreateResponseSchema)` to create a new message.
*/
export const ProjectServiceCreateResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 9);
+ messageDesc(file_metalstack_api_v2_project, 8);
/**
* ProjectServiceDeleteRequest is the request payload to delete a project.
@@ -426,7 +368,7 @@ export type ProjectServiceDeleteRequest = Message<"metalstack.api.v2.ProjectServ
* Use `create(ProjectServiceDeleteRequestSchema)` to create a new message.
*/
export const ProjectServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 10);
+ messageDesc(file_metalstack_api_v2_project, 9);
/**
* ProjectServiceDeleteResponse is the response payload to delete a project.
@@ -447,7 +389,7 @@ export type ProjectServiceDeleteResponse = Message<"metalstack.api.v2.ProjectSer
* Use `create(ProjectServiceDeleteResponseSchema)` to create a new message.
*/
export const ProjectServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 11);
+ messageDesc(file_metalstack_api_v2_project, 10);
/**
* ProjectServiceUpdateRequest is the request payload to update a project.
@@ -503,7 +445,7 @@ export type ProjectServiceUpdateRequest = Message<"metalstack.api.v2.ProjectServ
* Use `create(ProjectServiceUpdateRequestSchema)` to create a new message.
*/
export const ProjectServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 12);
+ messageDesc(file_metalstack_api_v2_project, 11);
/**
* ProjectServiceUpdateResponse is the response payload to update a project.
@@ -524,7 +466,7 @@ export type ProjectServiceUpdateResponse = Message<"metalstack.api.v2.ProjectSer
* Use `create(ProjectServiceUpdateResponseSchema)` to create a new message.
*/
export const ProjectServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 13);
+ messageDesc(file_metalstack_api_v2_project, 12);
/**
* ProjectServiceInviteRequest is used to invite a member to a project.
@@ -552,7 +494,7 @@ export type ProjectServiceInviteRequest = Message<"metalstack.api.v2.ProjectServ
* Use `create(ProjectServiceInviteRequestSchema)` to create a new message.
*/
export const ProjectServiceInviteRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 14);
+ messageDesc(file_metalstack_api_v2_project, 13);
/**
* ProjectServiceInviteResponse is the response payload to a invite member request.
@@ -575,7 +517,7 @@ export type ProjectServiceInviteResponse = Message<"metalstack.api.v2.ProjectSer
* Use `create(ProjectServiceInviteResponseSchema)` to create a new message.
*/
export const ProjectServiceInviteResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 15);
+ messageDesc(file_metalstack_api_v2_project, 14);
/**
* ProjectServiceInvitesListRequest is the request payload to a list invites request.
@@ -596,7 +538,7 @@ export type ProjectServiceInvitesListRequest = Message<"metalstack.api.v2.Projec
* Use `create(ProjectServiceInvitesListRequestSchema)` to create a new message.
*/
export const ProjectServiceInvitesListRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 16);
+ messageDesc(file_metalstack_api_v2_project, 15);
/**
* ProjectServiceInvitesListResponse is the response payload to a list invites request.
@@ -617,7 +559,7 @@ export type ProjectServiceInvitesListResponse = Message<"metalstack.api.v2.Proje
* Use `create(ProjectServiceInvitesListResponseSchema)` to create a new message.
*/
export const ProjectServiceInvitesListResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 17);
+ messageDesc(file_metalstack_api_v2_project, 16);
/**
* ProjectServiceInviteGetRequest is the request payload to get a invite.
@@ -638,7 +580,7 @@ export type ProjectServiceInviteGetRequest = Message<"metalstack.api.v2.ProjectS
* Use `create(ProjectServiceInviteGetRequestSchema)` to create a new message.
*/
export const ProjectServiceInviteGetRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 18);
+ messageDesc(file_metalstack_api_v2_project, 17);
/**
* ProjectServiceInviteGetResponse is the response payload to a get invite request.
@@ -659,204 +601,7 @@ export type ProjectServiceInviteGetResponse = Message<"metalstack.api.v2.Project
* Use `create(ProjectServiceInviteGetResponseSchema)` to create a new message.
*/
export const ProjectServiceInviteGetResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 19);
-
-/**
- * ProjectServiceLeaveRequest is used to leave a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceLeaveRequest
- */
-export type ProjectServiceLeaveRequest = Message<"metalstack.api.v2.ProjectServiceLeaveRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceLeaveRequest.
- * Use `create(ProjectServiceLeaveRequestSchema)` to create a new message.
- */
-export const ProjectServiceLeaveRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 20);
-
-/**
- * ProjectServiceLeaveResponse is the response payload to a leave project request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceLeaveResponse
- */
-export type ProjectServiceLeaveResponse = Message<"metalstack.api.v2.ProjectServiceLeaveResponse"> & {
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceLeaveResponse.
- * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message.
- */
-export const ProjectServiceLeaveResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 21);
-
-/**
- * ProjectServiceAddMemberRequest is the request payload for adding a member to a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceAddMemberRequest
- */
-export type ProjectServiceAddMemberRequest = Message<"metalstack.api.v2.ProjectServiceAddMemberRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
-
- /**
- * Login of the member to add.
- *
- * @generated from field: string member = 2;
- */
- member: string;
-
- /**
- * Role to assign to the new member.
- *
- * @generated from field: metalstack.api.v2.ProjectRole role = 3;
- */
- role: ProjectRole;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceAddMemberRequest.
- * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message.
- */
-export const ProjectServiceAddMemberRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 22);
-
-/**
- * ProjectServiceAddMemberResponse is the response payload for the add member request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceAddMemberResponse
- */
-export type ProjectServiceAddMemberResponse = Message<"metalstack.api.v2.ProjectServiceAddMemberResponse"> & {
- /**
- * ProjectMember is the added project member.
- *
- * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
- */
- projectMember?: ProjectMember | undefined;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceAddMemberResponse.
- * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message.
- */
-export const ProjectServiceAddMemberResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 23);
-
-/**
- * ProjectServiceRemoveMemberRequest is used to remove a member from a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberRequest
- */
-export type ProjectServiceRemoveMemberRequest = Message<"metalstack.api.v2.ProjectServiceRemoveMemberRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
-
- /**
- * Member is the id of the member to remove from this project.
- *
- * @generated from field: string member = 2;
- */
- member: string;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberRequest.
- * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message.
- */
-export const ProjectServiceRemoveMemberRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 24);
-
-/**
- * ProjectServiceRemoveMemberResponse is the response payload to a remove member request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberResponse
- */
-export type ProjectServiceRemoveMemberResponse = Message<"metalstack.api.v2.ProjectServiceRemoveMemberResponse"> & {
- /**
- * ProjectMember is the removed project member.
- *
- * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
- */
- projectMember?: ProjectMember | undefined;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse.
- * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message.
- */
-export const ProjectServiceRemoveMemberResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 25);
-
-/**
- * ProjectServiceUpdateMemberRequest is used to update a member of a project.
- *
- * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberRequest
- */
-export type ProjectServiceUpdateMemberRequest = Message<"metalstack.api.v2.ProjectServiceUpdateMemberRequest"> & {
- /**
- * Project is the uuid of the project.
- *
- * @generated from field: string project = 1;
- */
- project: string;
-
- /**
- * Member is the id of the member to remove from this project.
- *
- * @generated from field: string member = 2;
- */
- member: string;
-
- /**
- * Role is the role in this project the user will get after the update.
- *
- * @generated from field: metalstack.api.v2.ProjectRole role = 3;
- */
- role: ProjectRole;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberRequest.
- * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message.
- */
-export const ProjectServiceUpdateMemberRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 26);
-
-/**
- * ProjectServiceUpdateMemberResponse is the response payload to a update member request.
- *
- * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberResponse
- */
-export type ProjectServiceUpdateMemberResponse = Message<"metalstack.api.v2.ProjectServiceUpdateMemberResponse"> & {
- /**
- * ProjectMember is the updated project member.
- *
- * @generated from field: metalstack.api.v2.ProjectMember project_member = 1;
- */
- projectMember?: ProjectMember | undefined;
-};
-
-/**
- * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberResponse.
- * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message.
- */
-export const ProjectServiceUpdateMemberResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 27);
+ messageDesc(file_metalstack_api_v2_project, 18);
/**
* ProjectServiceInviteAcceptRequest is the request payload to a accept invite request.
@@ -877,7 +622,7 @@ export type ProjectServiceInviteAcceptRequest = Message<"metalstack.api.v2.Proje
* Use `create(ProjectServiceInviteAcceptRequestSchema)` to create a new message.
*/
export const ProjectServiceInviteAcceptRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 28);
+ messageDesc(file_metalstack_api_v2_project, 19);
/**
* ProjectServiceInviteAcceptResponse is the response payload to a accept invite request.
@@ -905,7 +650,7 @@ export type ProjectServiceInviteAcceptResponse = Message<"metalstack.api.v2.Proj
* Use `create(ProjectServiceInviteAcceptResponseSchema)` to create a new message.
*/
export const ProjectServiceInviteAcceptResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 29);
+ messageDesc(file_metalstack_api_v2_project, 20);
/**
* ProjectServiceInviteDeleteRequest is the request payload to a delete invite.
@@ -933,7 +678,7 @@ export type ProjectServiceInviteDeleteRequest = Message<"metalstack.api.v2.Proje
* Use `create(ProjectServiceInviteDeleteRequestSchema)` to create a new message.
*/
export const ProjectServiceInviteDeleteRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 30);
+ messageDesc(file_metalstack_api_v2_project, 21);
/**
* ProjectServiceInviteDeleteResponse is the response payload of a delete invite request.
@@ -948,7 +693,7 @@ export type ProjectServiceInviteDeleteResponse = Message<"metalstack.api.v2.Proj
* Use `create(ProjectServiceInviteDeleteResponseSchema)` to create a new message.
*/
export const ProjectServiceInviteDeleteResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_project, 31);
+ messageDesc(file_metalstack_api_v2_project, 22);
/**
* ProjectService provides project management operations.
@@ -1006,46 +751,6 @@ export const ProjectService: GenService<{
input: typeof ProjectServiceUpdateRequestSchema;
output: typeof ProjectServiceUpdateResponseSchema;
},
- /**
- * Leave project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.Leave
- */
- leave: {
- methodKind: "unary";
- input: typeof ProjectServiceLeaveRequestSchema;
- output: typeof ProjectServiceLeaveResponseSchema;
- },
- /**
- * AddMember adds a user to a project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.AddMember
- */
- addMember: {
- methodKind: "unary";
- input: typeof ProjectServiceAddMemberRequestSchema;
- output: typeof ProjectServiceAddMemberResponseSchema;
- },
- /**
- * RemoveMember removes a user from a project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.RemoveMember
- */
- removeMember: {
- methodKind: "unary";
- input: typeof ProjectServiceRemoveMemberRequestSchema;
- output: typeof ProjectServiceRemoveMemberResponseSchema;
- },
- /**
- * UpdateMember updates a user for a project.
- *
- * @generated from rpc metalstack.api.v2.ProjectService.UpdateMember
- */
- updateMember: {
- methodKind: "unary";
- input: typeof ProjectServiceUpdateMemberRequestSchema;
- output: typeof ProjectServiceUpdateMemberResponseSchema;
- },
/**
* Invite a user to a project.
*
diff --git a/js/metalstack/api/v2/tenant_member_pb.d.ts b/js/metalstack/api/v2/tenant_member_pb.d.ts
new file mode 100644
index 00000000..45af4312
--- /dev/null
+++ b/js/metalstack/api/v2/tenant_member_pb.d.ts
@@ -0,0 +1,417 @@
+import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import type { Timestamp } from "@bufbuild/protobuf/wkt";
+import type { Meta, TenantRole, UpdateMeta } from "./common_pb";
+import type { Message } from "@bufbuild/protobuf";
+/**
+ * Describes the file metalstack/api/v2/tenant_member.proto.
+ */
+export declare const file_metalstack_api_v2_tenant_member: GenFile;
+/**
+ * TenantMember defines a user that participates in a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMember
+ */
+export type TenantMember = Message<"metalstack.api.v2.TenantMember"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 1;
+ */
+ member: string;
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: metalstack.api.v2.TenantRole role = 2;
+ */
+ role: TenantRole;
+ /**
+ * Projects in which a user is a direct member.
+ *
+ * @generated from field: repeated string projects = 3;
+ */
+ projects: string[];
+ /**
+ * CreatedAt the date when the member was added to the tenant.
+ *
+ * @generated from field: google.protobuf.Timestamp created_at = 4;
+ */
+ createdAt?: Timestamp | undefined;
+ /**
+ * Meta for this tenant member.
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 5;
+ */
+ meta?: Meta | undefined;
+ /**
+ * Tenant is the tenant that this member participates in.
+ *
+ * @generated from field: string tenant = 6;
+ */
+ tenant: string;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMember.
+ * Use `create(TenantMemberSchema)` to create a new message.
+ */
+export declare const TenantMemberSchema: GenMessage;
+/**
+ * TenantMemberServiceListRequest is the request payload of the tenant member list request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceListRequest
+ */
+export type TenantMemberServiceListRequest = Message<"metalstack.api.v2.TenantMemberServiceListRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+ /**
+ * Query for tenant members.
+ *
+ * @generated from field: metalstack.api.v2.TenantMemberQuery query = 2;
+ */
+ query?: TenantMemberQuery | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceListRequest.
+ * Use `create(TenantMemberServiceListRequestSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceListRequestSchema: GenMessage;
+/**
+ * TenantMemberQuery is used to search tenant members.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberQuery
+ */
+export type TenantMemberQuery = Message<"metalstack.api.v2.TenantMemberQuery"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: optional string member = 1;
+ */
+ member?: string | undefined;
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: optional metalstack.api.v2.TenantRole role = 2;
+ */
+ role?: TenantRole | undefined;
+ /**
+ * Projects in which a user is a direct member.
+ *
+ * @generated from field: repeated string projects = 3;
+ */
+ projects: string[];
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberQuery.
+ * Use `create(TenantMemberQuerySchema)` to create a new message.
+ */
+export declare const TenantMemberQuerySchema: GenMessage;
+/**
+ * TenantMemberServiceGetRequest is the request payload of the tenant member get request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceGetRequest
+ */
+export type TenantMemberServiceGetRequest = Message<"metalstack.api.v2.TenantMemberServiceGetRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceGetRequest.
+ * Use `create(TenantMemberServiceGetRequestSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceGetRequestSchema: GenMessage;
+/**
+ * TenantMemberServiceDeleteRequest is used to remove a member from a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceDeleteRequest
+ */
+export type TenantMemberServiceDeleteRequest = Message<"metalstack.api.v2.TenantMemberServiceDeleteRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+ /**
+ * Member is the id of the member to remove from this tenant.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceDeleteRequest.
+ * Use `create(TenantMemberServiceDeleteRequestSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceDeleteRequestSchema: GenMessage;
+/**
+ * TenantMemberServiceCreateRequest is the request payload for adding a member to a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceCreateRequest
+ */
+export type TenantMemberServiceCreateRequest = Message<"metalstack.api.v2.TenantMemberServiceCreateRequest"> & {
+ /**
+ * Login of the tenant to which the member will be added.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+ /**
+ * Login of the member to add.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+ /**
+ * Role to assign to the new member.
+ *
+ * @generated from field: metalstack.api.v2.TenantRole role = 3;
+ */
+ role: TenantRole;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceCreateRequest.
+ * Use `create(TenantMemberServiceCreateRequestSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceCreateRequestSchema: GenMessage;
+/**
+ * TenantMemberServiceUpdateRequest is used to update a member from a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceUpdateRequest
+ */
+export type TenantMemberServiceUpdateRequest = Message<"metalstack.api.v2.TenantMemberServiceUpdateRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+ /**
+ * Member is the id of the member to update in this tenant.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+ /**
+ * Role of this user in this tenant.
+ *
+ * @generated from field: optional metalstack.api.v2.TenantRole role = 3;
+ */
+ role?: TenantRole | undefined;
+ /**
+ * UpdateMeta contains the timestamp and strategy to be used in this update request.
+ *
+ * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 4;
+ */
+ updateMeta?: UpdateMeta | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceUpdateRequest.
+ * Use `create(TenantMemberServiceUpdateRequestSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceUpdateRequestSchema: GenMessage;
+/**
+ * TenantMemberServiceGetResponse is the response payload of the tenant member get request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceGetResponse
+ */
+export type TenantMemberServiceGetResponse = Message<"metalstack.api.v2.TenantMemberServiceGetResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceGetResponse.
+ * Use `create(TenantMemberServiceGetResponseSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceGetResponseSchema: GenMessage;
+/**
+ * TenantMemberServiceListResponse is the response payload of the tenant member list request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceListResponse
+ */
+export type TenantMemberServiceListResponse = Message<"metalstack.api.v2.TenantMemberServiceListResponse"> & {
+ /**
+ * Members is the list of tenant members.
+ *
+ * @generated from field: repeated metalstack.api.v2.TenantMember members = 1;
+ */
+ members: TenantMember[];
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceListResponse.
+ * Use `create(TenantMemberServiceListResponseSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceListResponseSchema: GenMessage;
+/**
+ * TenantMemberServiceCreateResponse is the response payload of the tenant member create request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceCreateResponse
+ */
+export type TenantMemberServiceCreateResponse = Message<"metalstack.api.v2.TenantMemberServiceCreateResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceCreateResponse.
+ * Use `create(TenantMemberServiceCreateResponseSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceCreateResponseSchema: GenMessage;
+/**
+ * TenantMemberServiceUpdateResponse is the response payload of the tenant member update request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceUpdateResponse
+ */
+export type TenantMemberServiceUpdateResponse = Message<"metalstack.api.v2.TenantMemberServiceUpdateResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceUpdateResponse.
+ * Use `create(TenantMemberServiceUpdateResponseSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceUpdateResponseSchema: GenMessage;
+/**
+ * TenantMemberServiceDeleteResponse is the response payload of the tenant member delete request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceDeleteResponse
+ */
+export type TenantMemberServiceDeleteResponse = Message<"metalstack.api.v2.TenantMemberServiceDeleteResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceDeleteResponse.
+ * Use `create(TenantMemberServiceDeleteResponseSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceDeleteResponseSchema: GenMessage;
+/**
+ * TenantMemberServiceLeaveRequest is used to leave a tenant. This way a member is not required to ask a tenant owner to remove him.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceLeaveRequest
+ */
+export type TenantMemberServiceLeaveRequest = Message<"metalstack.api.v2.TenantMemberServiceLeaveRequest"> & {
+ /**
+ * Login of the tenant that the user wants to leave.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceLeaveRequest.
+ * Use `create(TenantMemberServiceLeaveRequestSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceLeaveRequestSchema: GenMessage;
+/**
+ * TenantMemberServiceLeaveResponse is the response payload to a leave tenant request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceLeaveResponse
+ */
+export type TenantMemberServiceLeaveResponse = Message<"metalstack.api.v2.TenantMemberServiceLeaveResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceLeaveResponse.
+ * Use `create(TenantMemberServiceLeaveResponseSchema)` to create a new message.
+ */
+export declare const TenantMemberServiceLeaveResponseSchema: GenMessage;
+/**
+ * TenantMemberService provides tenant member management operations.
+ *
+ * @generated from service metalstack.api.v2.TenantMemberService
+ */
+export declare const TenantMemberService: GenService<{
+ /**
+ * Creates a new tenant member.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Create
+ */
+ create: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceCreateRequestSchema;
+ output: typeof TenantMemberServiceCreateResponseSchema;
+ };
+ /**
+ * Returns the list of tenant members.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.List
+ */
+ list: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceListRequestSchema;
+ output: typeof TenantMemberServiceListResponseSchema;
+ };
+ /**
+ * Get a tenant member.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Get
+ */
+ get: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceGetRequestSchema;
+ output: typeof TenantMemberServiceGetResponseSchema;
+ };
+ /**
+ * Update a tenant member.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Update
+ */
+ update: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceUpdateRequestSchema;
+ output: typeof TenantMemberServiceUpdateResponseSchema;
+ };
+ /**
+ * Delete a tenant.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Delete
+ */
+ delete: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceDeleteRequestSchema;
+ output: typeof TenantMemberServiceDeleteResponseSchema;
+ };
+ /**
+ * Leave removes a member from a tenant.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Leave
+ */
+ leave: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceLeaveRequestSchema;
+ output: typeof TenantMemberServiceLeaveResponseSchema;
+ };
+}>;
diff --git a/js/metalstack/api/v2/tenant_member_pb.js b/js/metalstack/api/v2/tenant_member_pb.js
new file mode 100644
index 00000000..7a821852
--- /dev/null
+++ b/js/metalstack/api/v2/tenant_member_pb.js
@@ -0,0 +1,88 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/api/v2/tenant_member.proto (package metalstack.api.v2, syntax proto3)
+/* eslint-disable */
+import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
+import { file_metalstack_api_v2_common } from "./common_pb";
+import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
+/**
+ * Describes the file metalstack/api/v2/tenant_member.proto.
+ */
+export const file_metalstack_api_v2_tenant_member = /*@__PURE__*/ fileDesc("CiVtZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnRfbWVtYmVyLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLoAQoMVGVuYW50TWVtYmVyEhsKBm1lbWJlchgBIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABEhAKCHByb2plY3RzGAMgAygJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhsKBnRlbmFudBgGIAEoCUILukgIcgaQtK6xAgEicQoeVGVuYW50TWVtYmVyU2VydmljZUxpc3RSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIzCgVxdWVyeRgCIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclF1ZXJ5IpcBChFUZW5hbnRNZW1iZXJRdWVyeRIgCgZtZW1iZXIYASABKAlCC7pICHIGkLSusQIBSACIAQESOgoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABSAGIAQESEAoIcHJvamVjdHMYAyADKAlCCQoHX21lbWJlckIHCgVfcm9sZSJYCh1UZW5hbnRNZW1iZXJTZXJ2aWNlR2V0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASJOCiBUZW5hbnRNZW1iZXJTZXJ2aWNlRGVsZXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGbWVtYmVyGAIgASgJIpIBCiBUZW5hbnRNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEi3AEKIFRlbmFudE1lbWJlclNlcnZpY2VVcGRhdGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjoKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQAUgAiAEBEjoKC3VwZGF0ZV9tZXRhGAQgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBQgcKBV9yb2xlIlEKHlRlbmFudE1lbWJlclNlcnZpY2VHZXRSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiUwofVGVuYW50TWVtYmVyU2VydmljZUxpc3RSZXNwb25zZRIwCgdtZW1iZXJzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIlQKIVRlbmFudE1lbWJlclNlcnZpY2VDcmVhdGVSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiVAohVGVuYW50TWVtYmVyU2VydmljZVVwZGF0ZVJlc3BvbnNlEi8KBm1lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJUCiFUZW5hbnRNZW1iZXJTZXJ2aWNlRGVsZXRlUmVzcG9uc2USLwoGbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIj0KH1RlbmFudE1lbWJlclNlcnZpY2VMZWF2ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBIlMKIFRlbmFudE1lbWJlclNlcnZpY2VMZWF2ZVJlc3BvbnNlEi8KBm1lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjKIBgoTVGVuYW50TWVtYmVyU2VydmljZRJ+CgZDcmVhdGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclNlcnZpY2VDcmVhdGVSZXNwb25zZSIJwvMYAQHg8xgBEnsKBExpc3QSMS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlTGlzdFJlcXVlc3QaMi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlTGlzdFJlc3BvbnNlIgzC8xgEAQIDBODzGAISeAoDR2V0EjAubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyU2VydmljZUdldFJlcXVlc3QaMS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJ+CgZVcGRhdGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlVXBkYXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclNlcnZpY2VVcGRhdGVSZXNwb25zZSIJwvMYAQHg8xgBEn4KBkRlbGV0ZRIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclNlcnZpY2VEZWxldGVSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyU2VydmljZURlbGV0ZVJlc3BvbnNlIgnC8xgBAeDzGAESegoFTGVhdmUSMi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlTGVhdmVSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyU2VydmljZUxlYXZlUmVzcG9uc2UiCNjzGALg8xgBQscBChVjb20ubWV0YWxzdGFjay5hcGkudjJCEVRlbmFudE1lbWJlclByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+/**
+ * Describes the message metalstack.api.v2.TenantMember.
+ * Use `create(TenantMemberSchema)` to create a new message.
+ */
+export const TenantMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 0);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceListRequest.
+ * Use `create(TenantMemberServiceListRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 1);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberQuery.
+ * Use `create(TenantMemberQuerySchema)` to create a new message.
+ */
+export const TenantMemberQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 2);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceGetRequest.
+ * Use `create(TenantMemberServiceGetRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 3);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceDeleteRequest.
+ * Use `create(TenantMemberServiceDeleteRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 4);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceCreateRequest.
+ * Use `create(TenantMemberServiceCreateRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 5);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceUpdateRequest.
+ * Use `create(TenantMemberServiceUpdateRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 6);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceGetResponse.
+ * Use `create(TenantMemberServiceGetResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 7);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceListResponse.
+ * Use `create(TenantMemberServiceListResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 8);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceCreateResponse.
+ * Use `create(TenantMemberServiceCreateResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 9);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceUpdateResponse.
+ * Use `create(TenantMemberServiceUpdateResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 10);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceDeleteResponse.
+ * Use `create(TenantMemberServiceDeleteResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 11);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceLeaveRequest.
+ * Use `create(TenantMemberServiceLeaveRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceLeaveRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 12);
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceLeaveResponse.
+ * Use `create(TenantMemberServiceLeaveResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceLeaveResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant_member, 13);
+/**
+ * TenantMemberService provides tenant member management operations.
+ *
+ * @generated from service metalstack.api.v2.TenantMemberService
+ */
+export const TenantMemberService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_tenant_member, 0);
diff --git a/js/metalstack/api/v2/tenant_member_pb.ts b/js/metalstack/api/v2/tenant_member_pb.ts
new file mode 100644
index 00000000..ff3f54fd
--- /dev/null
+++ b/js/metalstack/api/v2/tenant_member_pb.ts
@@ -0,0 +1,488 @@
+// @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
+// @generated from file metalstack/api/v2/tenant_member.proto (package metalstack.api.v2, syntax proto3)
+/* eslint-disable */
+
+import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
+import type { Timestamp } from "@bufbuild/protobuf/wkt";
+import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
+import type { Meta, TenantRole, UpdateMeta } from "./common_pb";
+import { file_metalstack_api_v2_common } from "./common_pb";
+import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
+import type { Message } from "@bufbuild/protobuf";
+
+/**
+ * Describes the file metalstack/api/v2/tenant_member.proto.
+ */
+export const file_metalstack_api_v2_tenant_member: GenFile = /*@__PURE__*/
+ fileDesc("CiVtZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnRfbWVtYmVyLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLoAQoMVGVuYW50TWVtYmVyEhsKBm1lbWJlchgBIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABEhAKCHByb2plY3RzGAMgAygJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhsKBnRlbmFudBgGIAEoCUILukgIcgaQtK6xAgEicQoeVGVuYW50TWVtYmVyU2VydmljZUxpc3RSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIzCgVxdWVyeRgCIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclF1ZXJ5IpcBChFUZW5hbnRNZW1iZXJRdWVyeRIgCgZtZW1iZXIYASABKAlCC7pICHIGkLSusQIBSACIAQESOgoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABSAGIAQESEAoIcHJvamVjdHMYAyADKAlCCQoHX21lbWJlckIHCgVfcm9sZSJYCh1UZW5hbnRNZW1iZXJTZXJ2aWNlR2V0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASJOCiBUZW5hbnRNZW1iZXJTZXJ2aWNlRGVsZXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGbWVtYmVyGAIgASgJIpIBCiBUZW5hbnRNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEi3AEKIFRlbmFudE1lbWJlclNlcnZpY2VVcGRhdGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjoKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQAUgAiAEBEjoKC3VwZGF0ZV9tZXRhGAQgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBQgcKBV9yb2xlIlEKHlRlbmFudE1lbWJlclNlcnZpY2VHZXRSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiUwofVGVuYW50TWVtYmVyU2VydmljZUxpc3RSZXNwb25zZRIwCgdtZW1iZXJzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIlQKIVRlbmFudE1lbWJlclNlcnZpY2VDcmVhdGVSZXNwb25zZRIvCgZtZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiVAohVGVuYW50TWVtYmVyU2VydmljZVVwZGF0ZVJlc3BvbnNlEi8KBm1lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJUCiFUZW5hbnRNZW1iZXJTZXJ2aWNlRGVsZXRlUmVzcG9uc2USLwoGbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIj0KH1RlbmFudE1lbWJlclNlcnZpY2VMZWF2ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBIlMKIFRlbmFudE1lbWJlclNlcnZpY2VMZWF2ZVJlc3BvbnNlEi8KBm1lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjKIBgoTVGVuYW50TWVtYmVyU2VydmljZRJ+CgZDcmVhdGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlQ3JlYXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclNlcnZpY2VDcmVhdGVSZXNwb25zZSIJwvMYAQHg8xgBEnsKBExpc3QSMS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlTGlzdFJlcXVlc3QaMi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlTGlzdFJlc3BvbnNlIgzC8xgEAQIDBODzGAISeAoDR2V0EjAubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyU2VydmljZUdldFJlcXVlc3QaMS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJ+CgZVcGRhdGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlVXBkYXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclNlcnZpY2VVcGRhdGVSZXNwb25zZSIJwvMYAQHg8xgBEn4KBkRlbGV0ZRIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlclNlcnZpY2VEZWxldGVSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyU2VydmljZURlbGV0ZVJlc3BvbnNlIgnC8xgBAeDzGAESegoFTGVhdmUSMi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXJTZXJ2aWNlTGVhdmVSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyU2VydmljZUxlYXZlUmVzcG9uc2UiCNjzGALg8xgBQscBChVjb20ubWV0YWxzdGFjay5hcGkudjJCEVRlbmFudE1lbWJlclByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+
+/**
+ * TenantMember defines a user that participates in a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMember
+ */
+export type TenantMember = Message<"metalstack.api.v2.TenantMember"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 1;
+ */
+ member: string;
+
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: metalstack.api.v2.TenantRole role = 2;
+ */
+ role: TenantRole;
+
+ /**
+ * Projects in which a user is a direct member.
+ *
+ * @generated from field: repeated string projects = 3;
+ */
+ projects: string[];
+
+ /**
+ * CreatedAt the date when the member was added to the tenant.
+ *
+ * @generated from field: google.protobuf.Timestamp created_at = 4;
+ */
+ createdAt?: Timestamp | undefined;
+
+ /**
+ * Meta for this tenant member.
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 5;
+ */
+ meta?: Meta | undefined;
+
+ /**
+ * Tenant is the tenant that this member participates in.
+ *
+ * @generated from field: string tenant = 6;
+ */
+ tenant: string;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMember.
+ * Use `create(TenantMemberSchema)` to create a new message.
+ */
+export const TenantMemberSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 0);
+
+/**
+ * TenantMemberServiceListRequest is the request payload of the tenant member list request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceListRequest
+ */
+export type TenantMemberServiceListRequest = Message<"metalstack.api.v2.TenantMemberServiceListRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+
+ /**
+ * Query for tenant members.
+ *
+ * @generated from field: metalstack.api.v2.TenantMemberQuery query = 2;
+ */
+ query?: TenantMemberQuery | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceListRequest.
+ * Use `create(TenantMemberServiceListRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceListRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 1);
+
+/**
+ * TenantMemberQuery is used to search tenant members.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberQuery
+ */
+export type TenantMemberQuery = Message<"metalstack.api.v2.TenantMemberQuery"> & {
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: optional string member = 1;
+ */
+ member?: string | undefined;
+
+ /**
+ * Role is the role of the member.
+ *
+ * @generated from field: optional metalstack.api.v2.TenantRole role = 2;
+ */
+ role?: TenantRole | undefined;
+
+ /**
+ * Projects in which a user is a direct member.
+ *
+ * @generated from field: repeated string projects = 3;
+ */
+ projects: string[];
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberQuery.
+ * Use `create(TenantMemberQuerySchema)` to create a new message.
+ */
+export const TenantMemberQuerySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 2);
+
+/**
+ * TenantMemberServiceGetRequest is the request payload of the tenant member get request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceGetRequest
+ */
+export type TenantMemberServiceGetRequest = Message<"metalstack.api.v2.TenantMemberServiceGetRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+
+ /**
+ * Member is the user id of the member.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceGetRequest.
+ * Use `create(TenantMemberServiceGetRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceGetRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 3);
+
+/**
+ * TenantMemberServiceDeleteRequest is used to remove a member from a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceDeleteRequest
+ */
+export type TenantMemberServiceDeleteRequest = Message<"metalstack.api.v2.TenantMemberServiceDeleteRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+
+ /**
+ * Member is the id of the member to remove from this tenant.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceDeleteRequest.
+ * Use `create(TenantMemberServiceDeleteRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 4);
+
+/**
+ * TenantMemberServiceCreateRequest is the request payload for adding a member to a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceCreateRequest
+ */
+export type TenantMemberServiceCreateRequest = Message<"metalstack.api.v2.TenantMemberServiceCreateRequest"> & {
+ /**
+ * Login of the tenant to which the member will be added.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+
+ /**
+ * Login of the member to add.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+
+ /**
+ * Role to assign to the new member.
+ *
+ * @generated from field: metalstack.api.v2.TenantRole role = 3;
+ */
+ role: TenantRole;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceCreateRequest.
+ * Use `create(TenantMemberServiceCreateRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceCreateRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 5);
+
+/**
+ * TenantMemberServiceUpdateRequest is used to update a member from a tenant.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceUpdateRequest
+ */
+export type TenantMemberServiceUpdateRequest = Message<"metalstack.api.v2.TenantMemberServiceUpdateRequest"> & {
+ /**
+ * Login of the tenant.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+
+ /**
+ * Member is the id of the member to update in this tenant.
+ *
+ * @generated from field: string member = 2;
+ */
+ member: string;
+
+ /**
+ * Role of this user in this tenant.
+ *
+ * @generated from field: optional metalstack.api.v2.TenantRole role = 3;
+ */
+ role?: TenantRole | undefined;
+
+ /**
+ * UpdateMeta contains the timestamp and strategy to be used in this update request.
+ *
+ * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 4;
+ */
+ updateMeta?: UpdateMeta | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceUpdateRequest.
+ * Use `create(TenantMemberServiceUpdateRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 6);
+
+/**
+ * TenantMemberServiceGetResponse is the response payload of the tenant member get request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceGetResponse
+ */
+export type TenantMemberServiceGetResponse = Message<"metalstack.api.v2.TenantMemberServiceGetResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceGetResponse.
+ * Use `create(TenantMemberServiceGetResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceGetResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 7);
+
+/**
+ * TenantMemberServiceListResponse is the response payload of the tenant member list request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceListResponse
+ */
+export type TenantMemberServiceListResponse = Message<"metalstack.api.v2.TenantMemberServiceListResponse"> & {
+ /**
+ * Members is the list of tenant members.
+ *
+ * @generated from field: repeated metalstack.api.v2.TenantMember members = 1;
+ */
+ members: TenantMember[];
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceListResponse.
+ * Use `create(TenantMemberServiceListResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceListResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 8);
+
+/**
+ * TenantMemberServiceCreateResponse is the response payload of the tenant member create request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceCreateResponse
+ */
+export type TenantMemberServiceCreateResponse = Message<"metalstack.api.v2.TenantMemberServiceCreateResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceCreateResponse.
+ * Use `create(TenantMemberServiceCreateResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceCreateResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 9);
+
+/**
+ * TenantMemberServiceUpdateResponse is the response payload of the tenant member update request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceUpdateResponse
+ */
+export type TenantMemberServiceUpdateResponse = Message<"metalstack.api.v2.TenantMemberServiceUpdateResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceUpdateResponse.
+ * Use `create(TenantMemberServiceUpdateResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 10);
+
+/**
+ * TenantMemberServiceDeleteResponse is the response payload of the tenant member delete request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceDeleteResponse
+ */
+export type TenantMemberServiceDeleteResponse = Message<"metalstack.api.v2.TenantMemberServiceDeleteResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceDeleteResponse.
+ * Use `create(TenantMemberServiceDeleteResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 11);
+
+/**
+ * TenantMemberServiceLeaveRequest is used to leave a tenant. This way a member is not required to ask a tenant owner to remove him.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceLeaveRequest
+ */
+export type TenantMemberServiceLeaveRequest = Message<"metalstack.api.v2.TenantMemberServiceLeaveRequest"> & {
+ /**
+ * Login of the tenant that the user wants to leave.
+ *
+ * @generated from field: string login = 1;
+ */
+ login: string;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceLeaveRequest.
+ * Use `create(TenantMemberServiceLeaveRequestSchema)` to create a new message.
+ */
+export const TenantMemberServiceLeaveRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 12);
+
+/**
+ * TenantMemberServiceLeaveResponse is the response payload to a leave tenant request.
+ *
+ * @generated from message metalstack.api.v2.TenantMemberServiceLeaveResponse
+ */
+export type TenantMemberServiceLeaveResponse = Message<"metalstack.api.v2.TenantMemberServiceLeaveResponse"> & {
+ /**
+ * Member is the member of this tenant.
+ *
+ * @generated from field: metalstack.api.v2.TenantMember member = 1;
+ */
+ member?: TenantMember | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.TenantMemberServiceLeaveResponse.
+ * Use `create(TenantMemberServiceLeaveResponseSchema)` to create a new message.
+ */
+export const TenantMemberServiceLeaveResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_tenant_member, 13);
+
+/**
+ * TenantMemberService provides tenant member management operations.
+ *
+ * @generated from service metalstack.api.v2.TenantMemberService
+ */
+export const TenantMemberService: GenService<{
+ /**
+ * Creates a new tenant member.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Create
+ */
+ create: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceCreateRequestSchema;
+ output: typeof TenantMemberServiceCreateResponseSchema;
+ },
+ /**
+ * Returns the list of tenant members.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.List
+ */
+ list: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceListRequestSchema;
+ output: typeof TenantMemberServiceListResponseSchema;
+ },
+ /**
+ * Get a tenant member.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Get
+ */
+ get: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceGetRequestSchema;
+ output: typeof TenantMemberServiceGetResponseSchema;
+ },
+ /**
+ * Update a tenant member.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Update
+ */
+ update: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceUpdateRequestSchema;
+ output: typeof TenantMemberServiceUpdateResponseSchema;
+ },
+ /**
+ * Delete a tenant.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Delete
+ */
+ delete: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceDeleteRequestSchema;
+ output: typeof TenantMemberServiceDeleteResponseSchema;
+ },
+ /**
+ * Leave removes a member from a tenant.
+ *
+ * @generated from rpc metalstack.api.v2.TenantMemberService.Leave
+ */
+ leave: {
+ methodKind: "unary";
+ input: typeof TenantMemberServiceLeaveRequestSchema;
+ output: typeof TenantMemberServiceLeaveResponseSchema;
+ },
+}> = /*@__PURE__*/
+ serviceDesc(file_metalstack_api_v2_tenant_member, 0);
+
diff --git a/js/metalstack/api/v2/tenant_pb.d.ts b/js/metalstack/api/v2/tenant_pb.d.ts
index 75b31aa2..999bd0da 100644
--- a/js/metalstack/api/v2/tenant_pb.d.ts
+++ b/js/metalstack/api/v2/tenant_pb.d.ts
@@ -60,48 +60,6 @@ export type Tenant = Message<"metalstack.api.v2.Tenant"> & {
* Use `create(TenantSchema)` to create a new message.
*/
export declare const TenantSchema: GenMessage;
-/**
- * TenantMember defines a user that participates in a tenant.
- *
- * @generated from message metalstack.api.v2.TenantMember
- */
-export type TenantMember = Message<"metalstack.api.v2.TenantMember"> & {
- /**
- * Id is the user id of the member.
- *
- * @generated from field: string id = 1;
- */
- id: string;
- /**
- * Role is the role of the member.
- *
- * @generated from field: metalstack.api.v2.TenantRole role = 2;
- */
- role: TenantRole;
- /**
- * Projects in which a user is a direct member.
- *
- * @generated from field: repeated string projects = 3;
- */
- projects: string[];
- /**
- * CreatedAt the date when the member was added to the tenant.
- *
- * @generated from field: google.protobuf.Timestamp created_at = 4;
- */
- createdAt?: Timestamp | undefined;
- /**
- * Meta for this tenant member.
- *
- * @generated from field: metalstack.api.v2.Meta meta = 5;
- */
- meta?: Meta | undefined;
-};
-/**
- * Describes the message metalstack.api.v2.TenantMember.
- * Use `create(TenantMemberSchema)` to create a new message.
- */
-export declare const TenantMemberSchema: GenMessage;
/**
* TenantInvite defines invite to tenant.
*
@@ -366,12 +324,6 @@ export type TenantServiceGetResponse = Message<"metalstack.api.v2.TenantServiceG
* @generated from field: metalstack.api.v2.Tenant tenant = 1;
*/
tenant?: Tenant | undefined;
- /**
- * TenantMembers of this tenant.
- *
- * @generated from field: repeated metalstack.api.v2.TenantMember tenant_members = 2;
- */
- tenantMembers: TenantMember[];
};
/**
* Describes the message metalstack.api.v2.TenantServiceGetResponse.
@@ -564,77 +516,6 @@ export type TenantServiceInviteGetResponse = Message<"metalstack.api.v2.TenantSe
* Use `create(TenantServiceInviteGetResponseSchema)` to create a new message.
*/
export declare const TenantServiceInviteGetResponseSchema: GenMessage;
-/**
- * TenantServiceRemoveMemberRequest is used to remove a member from a tenant.
- *
- * @generated from message metalstack.api.v2.TenantServiceRemoveMemberRequest
- */
-export type TenantServiceRemoveMemberRequest = Message<"metalstack.api.v2.TenantServiceRemoveMemberRequest"> & {
- /**
- * Login of the tenant.
- *
- * @generated from field: string login = 1;
- */
- login: string;
- /**
- * Member is the id of the member to remove from this tenant.
- *
- * @generated from field: string member = 2;
- */
- member: string;
-};
-/**
- * Describes the message metalstack.api.v2.TenantServiceRemoveMemberRequest.
- * Use `create(TenantServiceRemoveMemberRequestSchema)` to create a new message.
- */
-export declare const TenantServiceRemoveMemberRequestSchema: GenMessage;
-/**
- * TenantServiceLeaveTenantRequest is used to leave a tenant.
- *
- * @generated from message metalstack.api.v2.TenantServiceLeaveRequest
- */
-export type TenantServiceLeaveRequest = Message<"metalstack.api.v2.TenantServiceLeaveRequest"> & {
- /**
- * Login of the tenant.
- *
- * @generated from field: string login = 1;
- */
- login: string;
-};
-/**
- * Describes the message metalstack.api.v2.TenantServiceLeaveRequest.
- * Use `create(TenantServiceLeaveRequestSchema)` to create a new message.
- */
-export declare const TenantServiceLeaveRequestSchema: GenMessage;
-/**
- * TenantServiceLeaveTenantResponse is the response payload to a leave tenant request.
- *
- * @generated from message metalstack.api.v2.TenantServiceLeaveResponse
- */
-export type TenantServiceLeaveResponse = Message<"metalstack.api.v2.TenantServiceLeaveResponse"> & {};
-/**
- * Describes the message metalstack.api.v2.TenantServiceLeaveResponse.
- * Use `create(TenantServiceLeaveResponseSchema)` to create a new message.
- */
-export declare const TenantServiceLeaveResponseSchema: GenMessage;
-/**
- * TenantServiceRemoveMemberResponse is the response payload to a remove member request.
- *
- * @generated from message metalstack.api.v2.TenantServiceRemoveMemberResponse
- */
-export type TenantServiceRemoveMemberResponse = Message<"metalstack.api.v2.TenantServiceRemoveMemberResponse"> & {
- /**
- * TenantMember is the removed tenant member.
- *
- * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1;
- */
- tenantMember?: TenantMember | undefined;
-};
-/**
- * Describes the message metalstack.api.v2.TenantServiceRemoveMemberResponse.
- * Use `create(TenantServiceRemoveMemberResponseSchema)` to create a new message.
- */
-export declare const TenantServiceRemoveMemberResponseSchema: GenMessage;
/**
* TenantServiceInviteAcceptRequest is the request payload to a accept invite request.
*
@@ -712,102 +593,6 @@ export type TenantServiceInviteDeleteResponse = Message<"metalstack.api.v2.Tenan
* Use `create(TenantServiceInviteDeleteResponseSchema)` to create a new message.
*/
export declare const TenantServiceInviteDeleteResponseSchema: GenMessage;
-/**
- * TenantServiceAddMemberRequest is the request payload for adding a member to a tenant.
- *
- * @generated from message metalstack.api.v2.TenantServiceAddMemberRequest
- */
-export type TenantServiceAddMemberRequest = Message<"metalstack.api.v2.TenantServiceAddMemberRequest"> & {
- /**
- * Login of the tenant to which the member will be added.
- *
- * @generated from field: string login = 1;
- */
- login: string;
- /**
- * Login of the member to add.
- *
- * @generated from field: string member = 2;
- */
- member: string;
- /**
- * Role to assign to the new member.
- *
- * @generated from field: metalstack.api.v2.TenantRole role = 3;
- */
- role: TenantRole;
-};
-/**
- * Describes the message metalstack.api.v2.TenantServiceAddMemberRequest.
- * Use `create(TenantServiceAddMemberRequestSchema)` to create a new message.
- */
-export declare const TenantServiceAddMemberRequestSchema: GenMessage