diff --git a/doc/index.html b/doc/index.html
index 5d616ceb..30a1d3c4 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -2939,6 +2939,14 @@
Generation identifies how often this entity was modified since creation. |
+
+ | deletion_task_id |
+ string |
+ optional |
+ DeletionTaskID is an optional id that is set to the meta after triggering the deletion.
+This can be used by admins to track the deletion progress if necessary. |
+
+
@@ -3673,6 +3681,13 @@
Phase represents the phase of the audit trace |
+
+ | meta |
+ Meta |
+ |
+ Meta for this audit trace |
+
+
@@ -4960,6 +4975,13 @@
Token is the token which is actually used by this microservice. |
+
+ | meta |
+ Meta |
+ |
+ Meta for this component |
+
+
@@ -13788,6 +13810,13 @@
CreatedAt the date when the member was added to the project |
+
+ | meta |
+ Meta |
+ |
+ Meta for this project member |
+
+
@@ -17940,6 +17969,13 @@
CreatedAt the date when the member was added to the tenant |
+
+ | meta |
+ Meta |
+ |
+ Meta for this tenant member |
+
+
diff --git a/go/metalstack/api/v2/audit.pb.go b/go/metalstack/api/v2/audit.pb.go
index 8eed2080..367b22e0 100644
--- a/go/metalstack/api/v2/audit.pb.go
+++ b/go/metalstack/api/v2/audit.pb.go
@@ -98,7 +98,9 @@ type AuditTrace struct {
// ResultCode is a status code describing the result of the API call. It is set for traces in the response phase and contains official gRPC status codes
ResultCode *int32 `protobuf:"varint,9,opt,name=result_code,json=resultCode,proto3,oneof" json:"result_code,omitempty"`
// Phase represents the phase of the audit trace
- Phase AuditPhase `protobuf:"varint,10,opt,name=phase,proto3,enum=metalstack.api.v2.AuditPhase" json:"phase,omitempty"`
+ Phase AuditPhase `protobuf:"varint,10,opt,name=phase,proto3,enum=metalstack.api.v2.AuditPhase" json:"phase,omitempty"`
+ // Meta for this audit trace
+ Meta *Meta `protobuf:"bytes,11,opt,name=meta,proto3" json:"meta,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -203,6 +205,13 @@ func (x *AuditTrace) GetPhase() AuditPhase {
return AuditPhase_AUDIT_PHASE_UNSPECIFIED
}
+func (x *AuditTrace) GetMeta() *Meta {
+ if x != nil {
+ return x.Meta
+ }
+ return nil
+}
+
// AuditQuery is the query for audit traces
type AuditQuery struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -554,7 +563,7 @@ var File_metalstack_api_v2_audit_proto protoreflect.FileDescriptor
const file_metalstack_api_v2_audit_proto_rawDesc = "" +
"\n" +
- "\x1dmetalstack/api/v2/audit.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\"\xfd\x02\n" +
+ "\x1dmetalstack/api/v2/audit.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\"\xaa\x03\n" +
"\n" +
"AuditTrace\x12\x1c\n" +
"\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x128\n" +
@@ -568,7 +577,8 @@ const file_metalstack_api_v2_audit_proto_rawDesc = "" +
"\vresult_code\x18\t \x01(\x05H\x02R\n" +
"resultCode\x88\x01\x01\x123\n" +
"\x05phase\x18\n" +
- " \x01(\x0e2\x1d.metalstack.api.v2.AuditPhaseR\x05phaseB\n" +
+ " \x01(\x0e2\x1d.metalstack.api.v2.AuditPhaseR\x05phase\x12+\n" +
+ "\x04meta\x18\v \x01(\v2\x17.metalstack.api.v2.MetaR\x04metaB\n" +
"\n" +
"\b_projectB\a\n" +
"\x05_bodyB\x0e\n" +
@@ -651,26 +661,28 @@ var file_metalstack_api_v2_audit_proto_goTypes = []any{
(*AuditServiceGetRequest)(nil), // 5: metalstack.api.v2.AuditServiceGetRequest
(*AuditServiceGetResponse)(nil), // 6: metalstack.api.v2.AuditServiceGetResponse
(*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp
+ (*Meta)(nil), // 8: metalstack.api.v2.Meta
}
var file_metalstack_api_v2_audit_proto_depIdxs = []int32{
7, // 0: metalstack.api.v2.AuditTrace.timestamp:type_name -> google.protobuf.Timestamp
0, // 1: metalstack.api.v2.AuditTrace.phase:type_name -> metalstack.api.v2.AuditPhase
- 7, // 2: metalstack.api.v2.AuditQuery.from:type_name -> google.protobuf.Timestamp
- 7, // 3: metalstack.api.v2.AuditQuery.to:type_name -> google.protobuf.Timestamp
- 0, // 4: metalstack.api.v2.AuditQuery.phase:type_name -> metalstack.api.v2.AuditPhase
- 2, // 5: metalstack.api.v2.AuditServiceListRequest.query:type_name -> metalstack.api.v2.AuditQuery
- 1, // 6: metalstack.api.v2.AuditServiceListResponse.traces:type_name -> metalstack.api.v2.AuditTrace
- 0, // 7: metalstack.api.v2.AuditServiceGetRequest.phase:type_name -> metalstack.api.v2.AuditPhase
- 1, // 8: metalstack.api.v2.AuditServiceGetResponse.trace:type_name -> metalstack.api.v2.AuditTrace
- 5, // 9: metalstack.api.v2.AuditService.Get:input_type -> metalstack.api.v2.AuditServiceGetRequest
- 3, // 10: metalstack.api.v2.AuditService.List:input_type -> metalstack.api.v2.AuditServiceListRequest
- 6, // 11: metalstack.api.v2.AuditService.Get:output_type -> metalstack.api.v2.AuditServiceGetResponse
- 4, // 12: metalstack.api.v2.AuditService.List:output_type -> metalstack.api.v2.AuditServiceListResponse
- 11, // [11:13] is the sub-list for method output_type
- 9, // [9:11] is the sub-list for method input_type
- 9, // [9:9] is the sub-list for extension type_name
- 9, // [9:9] is the sub-list for extension extendee
- 0, // [0:9] is the sub-list for field type_name
+ 8, // 2: metalstack.api.v2.AuditTrace.meta:type_name -> metalstack.api.v2.Meta
+ 7, // 3: metalstack.api.v2.AuditQuery.from:type_name -> google.protobuf.Timestamp
+ 7, // 4: metalstack.api.v2.AuditQuery.to:type_name -> google.protobuf.Timestamp
+ 0, // 5: metalstack.api.v2.AuditQuery.phase:type_name -> metalstack.api.v2.AuditPhase
+ 2, // 6: metalstack.api.v2.AuditServiceListRequest.query:type_name -> metalstack.api.v2.AuditQuery
+ 1, // 7: metalstack.api.v2.AuditServiceListResponse.traces:type_name -> metalstack.api.v2.AuditTrace
+ 0, // 8: metalstack.api.v2.AuditServiceGetRequest.phase:type_name -> metalstack.api.v2.AuditPhase
+ 1, // 9: metalstack.api.v2.AuditServiceGetResponse.trace:type_name -> metalstack.api.v2.AuditTrace
+ 5, // 10: metalstack.api.v2.AuditService.Get:input_type -> metalstack.api.v2.AuditServiceGetRequest
+ 3, // 11: metalstack.api.v2.AuditService.List:input_type -> metalstack.api.v2.AuditServiceListRequest
+ 6, // 12: metalstack.api.v2.AuditService.Get:output_type -> metalstack.api.v2.AuditServiceGetResponse
+ 4, // 13: metalstack.api.v2.AuditService.List:output_type -> metalstack.api.v2.AuditServiceListResponse
+ 12, // [12:14] is the sub-list for method output_type
+ 10, // [10:12] is the sub-list for method input_type
+ 10, // [10:10] is the sub-list for extension type_name
+ 10, // [10:10] is the sub-list for extension extendee
+ 0, // [0:10] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_audit_proto_init() }
diff --git a/go/metalstack/api/v2/common.pb.go b/go/metalstack/api/v2/common.pb.go
index f8ee0113..8f225bf0 100644
--- a/go/metalstack/api/v2/common.pb.go
+++ b/go/metalstack/api/v2/common.pb.go
@@ -579,9 +579,12 @@ type Meta struct {
// must be part of the update request to ensure optimistic locking
UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
// Generation identifies how often this entity was modified since creation.
- Generation uint64 `protobuf:"varint,4,opt,name=generation,proto3" json:"generation,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
+ Generation uint64 `protobuf:"varint,4,opt,name=generation,proto3" json:"generation,omitempty"`
+ // DeletionTaskID is an optional id that is set to the meta after triggering the deletion.
+ // This can be used by admins to track the deletion progress if necessary.
+ DeletionTaskId *string `protobuf:"bytes,5,opt,name=deletion_task_id,json=deletionTaskId,proto3,oneof" json:"deletion_task_id,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
}
func (x *Meta) Reset() {
@@ -642,6 +645,13 @@ func (x *Meta) GetGeneration() uint64 {
return 0
}
+func (x *Meta) GetDeletionTaskId() string {
+ if x != nil && x.DeletionTaskId != nil {
+ return *x.DeletionTaskId
+ }
+ return ""
+}
+
// UpdateLabels is a message to update labels
type UpdateLabels struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -874,7 +884,7 @@ const file_metalstack_api_v2_common_proto_rawDesc = "" +
"\x06labels\x18\x01 \x03(\v2%.metalstack.api.v2.Labels.LabelsEntryB\x1e\xbaH\x1b\x9a\x01\x18\xb8\x95\xb8\xb1\x02\x01\"\ar\x05\x10\x01\x18\x80\x02*\ar\x05\x10\x00\x18\x80\x02R\x06labels\x1a9\n" +
"\vLabelsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
- "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xdf\x01\n" +
+ "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa3\x02\n" +
"\x04Meta\x126\n" +
"\x06labels\x18\x01 \x01(\v2\x19.metalstack.api.v2.LabelsH\x00R\x06labels\x88\x01\x01\x129\n" +
"\n" +
@@ -883,8 +893,10 @@ const file_metalstack_api_v2_common_proto_rawDesc = "" +
"updated_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x1e\n" +
"\n" +
"generation\x18\x04 \x01(\x04R\n" +
- "generationB\t\n" +
- "\a_labels\"Y\n" +
+ "generation\x12-\n" +
+ "\x10deletion_task_id\x18\x05 \x01(\tH\x01R\x0edeletionTaskId\x88\x01\x01B\t\n" +
+ "\a_labelsB\x13\n" +
+ "\x11_deletion_task_id\"Y\n" +
"\fUpdateLabels\x121\n" +
"\x06update\x18\x01 \x01(\v2\x19.metalstack.api.v2.LabelsR\x06update\x12\x16\n" +
"\x06remove\x18\x02 \x03(\tR\x06remove\"\xaa\x01\n" +
diff --git a/go/metalstack/api/v2/component.pb.go b/go/metalstack/api/v2/component.pb.go
index 9702a969..6e92d8d3 100644
--- a/go/metalstack/api/v2/component.pb.go
+++ b/go/metalstack/api/v2/component.pb.go
@@ -112,7 +112,9 @@ type Component struct {
// Version of this service
Version *Version `protobuf:"bytes,7,opt,name=version,proto3" json:"version,omitempty"`
// Token is the token which is actually used by this microservice.
- Token *Token `protobuf:"bytes,8,opt,name=token,proto3" json:"token,omitempty"`
+ Token *Token `protobuf:"bytes,8,opt,name=token,proto3" json:"token,omitempty"`
+ // Meta for this component
+ Meta *Meta `protobuf:"bytes,9,opt,name=meta,proto3" json:"meta,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -203,6 +205,13 @@ func (x *Component) GetToken() *Token {
return nil
}
+func (x *Component) GetMeta() *Meta {
+ if x != nil {
+ return x.Meta
+ }
+ return nil
+}
+
// ComponentQuery to query components
type ComponentQuery struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -272,7 +281,7 @@ var File_metalstack_api_v2_component_proto protoreflect.FileDescriptor
const file_metalstack_api_v2_component_proto_rawDesc = "" +
"\n" +
- "!metalstack/api/v2/component.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1dmetalstack/api/v2/token.proto\x1a\x1fmetalstack/api/v2/version.proto\"\xab\x03\n" +
+ "!metalstack/api/v2/component.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1dmetalstack/api/v2/token.proto\x1a\x1fmetalstack/api/v2/version.proto\"\xd8\x03\n" +
"\tComponent\x12\x1c\n" +
"\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12>\n" +
"\x04type\x18\x02 \x01(\x0e2 .metalstack.api.v2.ComponentTypeB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12+\n" +
@@ -285,7 +294,8 @@ const file_metalstack_api_v2_component_proto_rawDesc = "" +
"reportedAt\x125\n" +
"\binterval\x18\x06 \x01(\v2\x19.google.protobuf.DurationR\binterval\x124\n" +
"\aversion\x18\a \x01(\v2\x1a.metalstack.api.v2.VersionR\aversion\x12.\n" +
- "\x05token\x18\b \x01(\v2\x18.metalstack.api.v2.TokenR\x05token\"\xcb\x01\n" +
+ "\x05token\x18\b \x01(\v2\x18.metalstack.api.v2.TokenR\x05token\x12+\n" +
+ "\x04meta\x18\t \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\"\xcb\x01\n" +
"\x0eComponentQuery\x12!\n" +
"\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12C\n" +
"\x04type\x18\x02 \x01(\x0e2 .metalstack.api.v2.ComponentTypeB\b\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x04type\x88\x01\x01\x120\n" +
@@ -328,6 +338,7 @@ var file_metalstack_api_v2_component_proto_goTypes = []any{
(*durationpb.Duration)(nil), // 4: google.protobuf.Duration
(*Version)(nil), // 5: metalstack.api.v2.Version
(*Token)(nil), // 6: metalstack.api.v2.Token
+ (*Meta)(nil), // 7: metalstack.api.v2.Meta
}
var file_metalstack_api_v2_component_proto_depIdxs = []int32{
0, // 0: metalstack.api.v2.Component.type:type_name -> metalstack.api.v2.ComponentType
@@ -336,12 +347,13 @@ var file_metalstack_api_v2_component_proto_depIdxs = []int32{
4, // 3: metalstack.api.v2.Component.interval:type_name -> google.protobuf.Duration
5, // 4: metalstack.api.v2.Component.version:type_name -> metalstack.api.v2.Version
6, // 5: metalstack.api.v2.Component.token:type_name -> metalstack.api.v2.Token
- 0, // 6: metalstack.api.v2.ComponentQuery.type:type_name -> metalstack.api.v2.ComponentType
- 7, // [7:7] is the sub-list for method output_type
- 7, // [7:7] 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
+ 7, // 6: metalstack.api.v2.Component.meta:type_name -> metalstack.api.v2.Meta
+ 0, // 7: metalstack.api.v2.ComponentQuery.type:type_name -> metalstack.api.v2.ComponentType
+ 8, // [8:8] is the sub-list for method output_type
+ 8, // [8:8] is the sub-list for method input_type
+ 8, // [8:8] is the sub-list for extension type_name
+ 8, // [8:8] is the sub-list for extension extendee
+ 0, // [0:8] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_component_proto_init() }
diff --git a/go/metalstack/api/v2/project.pb.go b/go/metalstack/api/v2/project.pb.go
index 3a1ed825..1bcacc3d 100644
--- a/go/metalstack/api/v2/project.pb.go
+++ b/go/metalstack/api/v2/project.pb.go
@@ -127,7 +127,9 @@ type ProjectMember struct {
// 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"`
+ 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
}
@@ -190,6 +192,13 @@ func (x *ProjectMember) GetCreatedAt() *timestamppb.Timestamp {
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"`
@@ -1664,13 +1673,14 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" +
"\x06tenant\x18\x05 \x01(\tR\x06tenant\x12\"\n" +
"\n" +
"avatar_url\x18\x06 \x01(\tH\x00R\tavatarUrl\x88\x01\x01B\r\n" +
- "\v_avatar_url\"\xcb\x01\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\"\xe7\x02\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" +
"\rProjectInvite\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n" +
"\aproject\x18\x02 \x01(\tR\aproject\x12<\n" +
@@ -1835,56 +1845,57 @@ var file_metalstack_api_v2_project_proto_depIdxs = []int32{
29, // 0: metalstack.api.v2.Project.meta:type_name -> metalstack.api.v2.Meta
30, // 1: metalstack.api.v2.ProjectMember.role:type_name -> metalstack.api.v2.ProjectRole
31, // 2: metalstack.api.v2.ProjectMember.created_at:type_name -> google.protobuf.Timestamp
- 30, // 3: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole
- 31, // 4: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp
- 31, // 5: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp
- 32, // 6: metalstack.api.v2.ProjectServiceListRequest.labels:type_name -> metalstack.api.v2.Labels
- 0, // 7: metalstack.api.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
- 0, // 8: metalstack.api.v2.ProjectServiceGetResponse.project:type_name -> metalstack.api.v2.Project
- 1, // 9: metalstack.api.v2.ProjectServiceGetResponse.project_members:type_name -> metalstack.api.v2.ProjectMember
- 32, // 10: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 0, // 11: metalstack.api.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
- 0, // 12: metalstack.api.v2.ProjectServiceDeleteResponse.project:type_name -> metalstack.api.v2.Project
- 33, // 13: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 34, // 14: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
- 0, // 15: metalstack.api.v2.ProjectServiceUpdateResponse.project:type_name -> metalstack.api.v2.Project
- 30, // 16: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole
- 2, // 17: metalstack.api.v2.ProjectServiceInviteResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
- 2, // 18: metalstack.api.v2.ProjectServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.ProjectInvite
- 2, // 19: metalstack.api.v2.ProjectServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
- 30, // 20: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
- 1, // 21: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
- 3, // 22: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest
- 5, // 23: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest
- 7, // 24: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest
- 9, // 25: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest
- 11, // 26: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest
- 19, // 27: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest
- 21, // 28: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest
- 23, // 29: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest
- 13, // 30: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest
- 25, // 31: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest
- 27, // 32: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest
- 15, // 33: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest
- 17, // 34: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest
- 4, // 35: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse
- 6, // 36: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse
- 8, // 37: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse
- 10, // 38: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse
- 12, // 39: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse
- 20, // 40: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse
- 22, // 41: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse
- 24, // 42: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse
- 14, // 43: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse
- 26, // 44: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse
- 28, // 45: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse
- 16, // 46: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse
- 18, // 47: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse
- 35, // [35:48] is the sub-list for method output_type
- 22, // [22:35] is the sub-list for method input_type
- 22, // [22:22] is the sub-list for extension type_name
- 22, // [22:22] is the sub-list for extension extendee
- 0, // [0:22] is the sub-list for field type_name
+ 29, // 3: metalstack.api.v2.ProjectMember.meta:type_name -> metalstack.api.v2.Meta
+ 30, // 4: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole
+ 31, // 5: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp
+ 31, // 6: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp
+ 32, // 7: metalstack.api.v2.ProjectServiceListRequest.labels:type_name -> metalstack.api.v2.Labels
+ 0, // 8: metalstack.api.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project
+ 0, // 9: metalstack.api.v2.ProjectServiceGetResponse.project:type_name -> metalstack.api.v2.Project
+ 1, // 10: metalstack.api.v2.ProjectServiceGetResponse.project_members:type_name -> metalstack.api.v2.ProjectMember
+ 32, // 11: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 0, // 12: metalstack.api.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project
+ 0, // 13: metalstack.api.v2.ProjectServiceDeleteResponse.project:type_name -> metalstack.api.v2.Project
+ 33, // 14: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 34, // 15: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 0, // 16: metalstack.api.v2.ProjectServiceUpdateResponse.project:type_name -> metalstack.api.v2.Project
+ 30, // 17: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole
+ 2, // 18: metalstack.api.v2.ProjectServiceInviteResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
+ 2, // 19: metalstack.api.v2.ProjectServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.ProjectInvite
+ 2, // 20: metalstack.api.v2.ProjectServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.ProjectInvite
+ 30, // 21: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole
+ 1, // 22: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember
+ 3, // 23: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest
+ 5, // 24: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest
+ 7, // 25: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest
+ 9, // 26: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest
+ 11, // 27: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest
+ 19, // 28: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest
+ 21, // 29: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest
+ 23, // 30: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest
+ 13, // 31: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest
+ 25, // 32: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest
+ 27, // 33: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest
+ 15, // 34: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest
+ 17, // 35: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest
+ 4, // 36: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse
+ 6, // 37: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse
+ 8, // 38: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse
+ 10, // 39: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse
+ 12, // 40: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse
+ 20, // 41: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse
+ 22, // 42: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse
+ 24, // 43: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse
+ 14, // 44: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse
+ 26, // 45: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse
+ 28, // 46: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse
+ 16, // 47: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse
+ 18, // 48: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse
+ 36, // [36:49] is the sub-list for method output_type
+ 23, // [23:36] is the sub-list for method input_type
+ 23, // [23:23] is the sub-list for extension type_name
+ 23, // [23:23] is the sub-list for extension extendee
+ 0, // [0:23] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_project_proto_init() }
diff --git a/go/metalstack/api/v2/tenant.pb.go b/go/metalstack/api/v2/tenant.pb.go
index 7e2f7e7d..7524633e 100644
--- a/go/metalstack/api/v2/tenant.pb.go
+++ b/go/metalstack/api/v2/tenant.pb.go
@@ -133,7 +133,9 @@ type TenantMember struct {
// Projects for the 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"`
+ 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
}
@@ -196,6 +198,13 @@ func (x *TenantMember) GetCreatedAt() *timestamppb.Timestamp {
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"`
@@ -1670,13 +1679,14 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" +
"\n" +
"avatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n" +
"\n" +
- "created_by\x18\a \x01(\tR\tcreatedBy\"\xb2\x01\n" +
+ "created_by\x18\a \x01(\tR\tcreatedBy\"\xdf\x01\n" +
"\fTenantMember\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\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\"\xfb\x02\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" +
"\fTenantInvite\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n" +
"\rtarget_tenant\x18\x02 \x01(\tR\ftargetTenant\x12;\n" +
@@ -1844,56 +1854,57 @@ var file_metalstack_api_v2_tenant_proto_depIdxs = []int32{
29, // 0: metalstack.api.v2.Tenant.meta:type_name -> metalstack.api.v2.Meta
30, // 1: metalstack.api.v2.TenantMember.role:type_name -> metalstack.api.v2.TenantRole
31, // 2: metalstack.api.v2.TenantMember.created_at:type_name -> google.protobuf.Timestamp
- 30, // 3: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole
- 31, // 4: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp
- 31, // 5: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp
- 32, // 6: metalstack.api.v2.TenantServiceListRequest.labels:type_name -> metalstack.api.v2.Labels
- 32, // 7: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 33, // 8: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 34, // 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
- 1, // 11: metalstack.api.v2.TenantServiceGetResponse.tenant_members:type_name -> metalstack.api.v2.TenantMember
- 0, // 12: metalstack.api.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant
- 0, // 13: metalstack.api.v2.TenantServiceCreateResponse.tenant:type_name -> metalstack.api.v2.Tenant
- 0, // 14: metalstack.api.v2.TenantServiceUpdateResponse.tenant:type_name -> metalstack.api.v2.Tenant
- 0, // 15: metalstack.api.v2.TenantServiceDeleteResponse.tenant:type_name -> metalstack.api.v2.Tenant
- 30, // 16: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole
- 2, // 17: metalstack.api.v2.TenantServiceInviteResponse.invite:type_name -> metalstack.api.v2.TenantInvite
- 2, // 18: metalstack.api.v2.TenantServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.TenantInvite
- 2, // 19: metalstack.api.v2.TenantServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.TenantInvite
- 30, // 20: metalstack.api.v2.TenantServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.TenantRole
- 1, // 21: metalstack.api.v2.TenantServiceUpdateMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember
- 5, // 22: metalstack.api.v2.TenantService.Create:input_type -> metalstack.api.v2.TenantServiceCreateRequest
- 3, // 23: metalstack.api.v2.TenantService.List:input_type -> metalstack.api.v2.TenantServiceListRequest
- 4, // 24: metalstack.api.v2.TenantService.Get:input_type -> metalstack.api.v2.TenantServiceGetRequest
- 6, // 25: metalstack.api.v2.TenantService.Update:input_type -> metalstack.api.v2.TenantServiceUpdateRequest
- 7, // 26: metalstack.api.v2.TenantService.Delete:input_type -> metalstack.api.v2.TenantServiceDeleteRequest
- 20, // 27: metalstack.api.v2.TenantService.Leave:input_type -> metalstack.api.v2.TenantServiceLeaveRequest
- 19, // 28: metalstack.api.v2.TenantService.RemoveMember:input_type -> metalstack.api.v2.TenantServiceRemoveMemberRequest
- 27, // 29: metalstack.api.v2.TenantService.UpdateMember:input_type -> metalstack.api.v2.TenantServiceUpdateMemberRequest
- 13, // 30: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest
- 23, // 31: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest
- 25, // 32: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest
- 15, // 33: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest
- 17, // 34: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest
- 10, // 35: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse
- 9, // 36: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse
- 8, // 37: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse
- 11, // 38: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse
- 12, // 39: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse
- 21, // 40: metalstack.api.v2.TenantService.Leave:output_type -> metalstack.api.v2.TenantServiceLeaveResponse
- 22, // 41: metalstack.api.v2.TenantService.RemoveMember:output_type -> metalstack.api.v2.TenantServiceRemoveMemberResponse
- 28, // 42: metalstack.api.v2.TenantService.UpdateMember:output_type -> metalstack.api.v2.TenantServiceUpdateMemberResponse
- 14, // 43: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse
- 24, // 44: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse
- 26, // 45: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse
- 16, // 46: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse
- 18, // 47: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse
- 35, // [35:48] is the sub-list for method output_type
- 22, // [22:35] is the sub-list for method input_type
- 22, // [22:22] is the sub-list for extension type_name
- 22, // [22:22] is the sub-list for extension extendee
- 0, // [0:22] is the sub-list for field type_name
+ 29, // 3: metalstack.api.v2.TenantMember.meta:type_name -> metalstack.api.v2.Meta
+ 30, // 4: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole
+ 31, // 5: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp
+ 31, // 6: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp
+ 32, // 7: metalstack.api.v2.TenantServiceListRequest.labels:type_name -> metalstack.api.v2.Labels
+ 32, // 8: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 33, // 9: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 34, // 10: metalstack.api.v2.TenantServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 0, // 11: metalstack.api.v2.TenantServiceGetResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 1, // 12: metalstack.api.v2.TenantServiceGetResponse.tenant_members:type_name -> metalstack.api.v2.TenantMember
+ 0, // 13: metalstack.api.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant
+ 0, // 14: metalstack.api.v2.TenantServiceCreateResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 0, // 15: metalstack.api.v2.TenantServiceUpdateResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 0, // 16: metalstack.api.v2.TenantServiceDeleteResponse.tenant:type_name -> metalstack.api.v2.Tenant
+ 30, // 17: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole
+ 2, // 18: metalstack.api.v2.TenantServiceInviteResponse.invite:type_name -> metalstack.api.v2.TenantInvite
+ 2, // 19: metalstack.api.v2.TenantServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.TenantInvite
+ 2, // 20: metalstack.api.v2.TenantServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.TenantInvite
+ 30, // 21: metalstack.api.v2.TenantServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.TenantRole
+ 1, // 22: metalstack.api.v2.TenantServiceUpdateMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember
+ 5, // 23: metalstack.api.v2.TenantService.Create:input_type -> metalstack.api.v2.TenantServiceCreateRequest
+ 3, // 24: metalstack.api.v2.TenantService.List:input_type -> metalstack.api.v2.TenantServiceListRequest
+ 4, // 25: metalstack.api.v2.TenantService.Get:input_type -> metalstack.api.v2.TenantServiceGetRequest
+ 6, // 26: metalstack.api.v2.TenantService.Update:input_type -> metalstack.api.v2.TenantServiceUpdateRequest
+ 7, // 27: metalstack.api.v2.TenantService.Delete:input_type -> metalstack.api.v2.TenantServiceDeleteRequest
+ 20, // 28: metalstack.api.v2.TenantService.Leave:input_type -> metalstack.api.v2.TenantServiceLeaveRequest
+ 19, // 29: metalstack.api.v2.TenantService.RemoveMember:input_type -> metalstack.api.v2.TenantServiceRemoveMemberRequest
+ 27, // 30: metalstack.api.v2.TenantService.UpdateMember:input_type -> metalstack.api.v2.TenantServiceUpdateMemberRequest
+ 13, // 31: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest
+ 23, // 32: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest
+ 25, // 33: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest
+ 15, // 34: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest
+ 17, // 35: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest
+ 10, // 36: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse
+ 9, // 37: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse
+ 8, // 38: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse
+ 11, // 39: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse
+ 12, // 40: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse
+ 21, // 41: metalstack.api.v2.TenantService.Leave:output_type -> metalstack.api.v2.TenantServiceLeaveResponse
+ 22, // 42: metalstack.api.v2.TenantService.RemoveMember:output_type -> metalstack.api.v2.TenantServiceRemoveMemberResponse
+ 28, // 43: metalstack.api.v2.TenantService.UpdateMember:output_type -> metalstack.api.v2.TenantServiceUpdateMemberResponse
+ 14, // 44: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse
+ 24, // 45: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse
+ 26, // 46: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse
+ 16, // 47: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse
+ 18, // 48: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse
+ 36, // [36:49] is the sub-list for method output_type
+ 23, // [23:36] is the sub-list for method input_type
+ 23, // [23:23] is the sub-list for extension type_name
+ 23, // [23:23] is the sub-list for extension extendee
+ 0, // [0:23] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_tenant_proto_init() }
diff --git a/js/metalstack/api/v2/audit_pb.d.ts b/js/metalstack/api/v2/audit_pb.d.ts
index 0afb390c..b4d971a3 100644
--- a/js/metalstack/api/v2/audit_pb.d.ts
+++ b/js/metalstack/api/v2/audit_pb.d.ts
@@ -1,5 +1,6 @@
import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import type { Timestamp } from "@bufbuild/protobuf/wkt";
+import type { Meta } from "./common_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/api/v2/audit.proto.
@@ -71,6 +72,12 @@ export type AuditTrace = Message<"metalstack.api.v2.AuditTrace"> & {
* @generated from field: metalstack.api.v2.AuditPhase phase = 10;
*/
phase: AuditPhase;
+ /**
+ * Meta for this audit trace
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 11;
+ */
+ meta?: Meta | undefined;
};
/**
* Describes the message metalstack.api.v2.AuditTrace.
diff --git a/js/metalstack/api/v2/audit_pb.js b/js/metalstack/api/v2/audit_pb.js
index 404b0f3d..c33cd4aa 100644
--- a/js/metalstack/api/v2/audit_pb.js
+++ b/js/metalstack/api/v2/audit_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/audit.proto.
*/
-export const file_metalstack_api_v2_audit = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi9hdWRpdC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIiqgIKCkF1ZGl0VHJhY2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgR1c2VyGAMgASgJEg4KBnRlbmFudBgEIAEoCRIUCgdwcm9qZWN0GAUgASgJSACIAQESDgoGbWV0aG9kGAYgASgJEhEKBGJvZHkYByABKAlIAYgBARIRCglzb3VyY2VfaXAYCCABKAkSGAoLcmVzdWx0X2NvZGUYCSABKAVIAogBARIsCgVwaGFzZRgKIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCgoIX3Byb2plY3RCBwoFX2JvZHlCDgoMX3Jlc3VsdF9jb2RlIpoECgpBdWRpdFF1ZXJ5EhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESLQoEZnJvbRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIrCgJ0bxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIeCgR1c2VyGAUgASgJQgu6SAhyBsCzrrECAUgDiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSASIAQESHwoGbWV0aG9kGAcgASgJQgq6SAdyBRACGIACSAWIAQESHwoJc291cmNlX2lwGAggASgJQge6SARyAnABSAaIAQESIQoLcmVzdWx0X2NvZGUYCSABKAVCB7pIBBoCKABIB4gBARIdCgRib2R5GAogASgJQgq6SAdyBRACGIACSAiIAQESHgoFbGltaXQYCyABKAVCCrpIBxoFGOgHIABICYgBARI7CgVwaGFzZRgMIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSAqIAQFCBwoFX3V1aWRCBwoFX2Zyb21CBQoDX3RvQgcKBV91c2VyQgoKCF9wcm9qZWN0QgkKB19tZXRob2RCDAoKX3NvdXJjZV9pcEIOCgxfcmVzdWx0X2NvZGVCBwoFX2JvZHlCCAoGX2xpbWl0QggKBl9waGFzZSJjChdBdWRpdFNlcnZpY2VMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESLAoFcXVlcnkYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFF1ZXJ5IkkKGEF1ZGl0U2VydmljZUxpc3RSZXNwb25zZRItCgZ0cmFjZXMYASADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFRyYWNlIpMBChZBdWRpdFNlcnZpY2VHZXRSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBsCzrrECARIWCgR1dWlkGAIgASgJQgi6SAVyA7ABARI7CgVwaGFzZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSACIAQFCCAoGX3BoYXNlIkcKF0F1ZGl0U2VydmljZUdldFJlc3BvbnNlEiwKBXRyYWNlGAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuQXVkaXRUcmFjZSpcCgpBdWRpdFBoYXNlEhsKF0FVRElUX1BIQVNFX1VOU1BFQ0lGSUVEEAASFwoTQVVESVRfUEhBU0VfUkVRVUVTVBABEhgKFEFVRElUX1BIQVNFX1JFU1BPTlNFEAIy4wEKDEF1ZGl0U2VydmljZRJnCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlR2V0UmVzcG9uc2UiCcLzGAEB4PMYAhJqCgRMaXN0EioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlTGlzdFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VMaXN0UmVzcG9uc2UiCcLzGAEB4PMYAkLAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpBdWRpdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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_audit = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi9hdWRpdC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIi0QIKCkF1ZGl0VHJhY2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgR1c2VyGAMgASgJEg4KBnRlbmFudBgEIAEoCRIUCgdwcm9qZWN0GAUgASgJSACIAQESDgoGbWV0aG9kGAYgASgJEhEKBGJvZHkYByABKAlIAYgBARIRCglzb3VyY2VfaXAYCCABKAkSGAoLcmVzdWx0X2NvZGUYCSABKAVIAogBARIsCgVwaGFzZRgKIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2USJQoEbWV0YRgLIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFCCgoIX3Byb2plY3RCBwoFX2JvZHlCDgoMX3Jlc3VsdF9jb2RlIpoECgpBdWRpdFF1ZXJ5EhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESLQoEZnJvbRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIrCgJ0bxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIeCgR1c2VyGAUgASgJQgu6SAhyBsCzrrECAUgDiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSASIAQESHwoGbWV0aG9kGAcgASgJQgq6SAdyBRACGIACSAWIAQESHwoJc291cmNlX2lwGAggASgJQge6SARyAnABSAaIAQESIQoLcmVzdWx0X2NvZGUYCSABKAVCB7pIBBoCKABIB4gBARIdCgRib2R5GAogASgJQgq6SAdyBRACGIACSAiIAQESHgoFbGltaXQYCyABKAVCCrpIBxoFGOgHIABICYgBARI7CgVwaGFzZRgMIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSAqIAQFCBwoFX3V1aWRCBwoFX2Zyb21CBQoDX3RvQgcKBV91c2VyQgoKCF9wcm9qZWN0QgkKB19tZXRob2RCDAoKX3NvdXJjZV9pcEIOCgxfcmVzdWx0X2NvZGVCBwoFX2JvZHlCCAoGX2xpbWl0QggKBl9waGFzZSJjChdBdWRpdFNlcnZpY2VMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESLAoFcXVlcnkYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFF1ZXJ5IkkKGEF1ZGl0U2VydmljZUxpc3RSZXNwb25zZRItCgZ0cmFjZXMYASADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFRyYWNlIpMBChZBdWRpdFNlcnZpY2VHZXRSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBsCzrrECARIWCgR1dWlkGAIgASgJQgi6SAVyA7ABARI7CgVwaGFzZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSACIAQFCCAoGX3BoYXNlIkcKF0F1ZGl0U2VydmljZUdldFJlc3BvbnNlEiwKBXRyYWNlGAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuQXVkaXRUcmFjZSpcCgpBdWRpdFBoYXNlEhsKF0FVRElUX1BIQVNFX1VOU1BFQ0lGSUVEEAASFwoTQVVESVRfUEhBU0VfUkVRVUVTVBABEhgKFEFVRElUX1BIQVNFX1JFU1BPTlNFEAIy4wEKDEF1ZGl0U2VydmljZRJnCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlR2V0UmVzcG9uc2UiCcLzGAEB4PMYAhJqCgRMaXN0EioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlTGlzdFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VMaXN0UmVzcG9uc2UiCcLzGAEB4PMYAkLAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpBdWRpdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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.AuditTrace.
* Use `create(AuditTraceSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/audit_pb.ts b/js/metalstack/api/v2/audit_pb.ts
index 381ffbeb..abb6aac7 100644
--- a/js/metalstack/api/v2/audit_pb.ts
+++ b/js/metalstack/api/v2/audit_pb.ts
@@ -7,6 +7,7 @@ import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf
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 } 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";
@@ -15,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/audit.proto.
*/
export const file_metalstack_api_v2_audit: GenFile = /*@__PURE__*/
- fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi9hdWRpdC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIiqgIKCkF1ZGl0VHJhY2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgR1c2VyGAMgASgJEg4KBnRlbmFudBgEIAEoCRIUCgdwcm9qZWN0GAUgASgJSACIAQESDgoGbWV0aG9kGAYgASgJEhEKBGJvZHkYByABKAlIAYgBARIRCglzb3VyY2VfaXAYCCABKAkSGAoLcmVzdWx0X2NvZGUYCSABKAVIAogBARIsCgVwaGFzZRgKIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCgoIX3Byb2plY3RCBwoFX2JvZHlCDgoMX3Jlc3VsdF9jb2RlIpoECgpBdWRpdFF1ZXJ5EhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESLQoEZnJvbRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIrCgJ0bxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIeCgR1c2VyGAUgASgJQgu6SAhyBsCzrrECAUgDiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSASIAQESHwoGbWV0aG9kGAcgASgJQgq6SAdyBRACGIACSAWIAQESHwoJc291cmNlX2lwGAggASgJQge6SARyAnABSAaIAQESIQoLcmVzdWx0X2NvZGUYCSABKAVCB7pIBBoCKABIB4gBARIdCgRib2R5GAogASgJQgq6SAdyBRACGIACSAiIAQESHgoFbGltaXQYCyABKAVCCrpIBxoFGOgHIABICYgBARI7CgVwaGFzZRgMIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSAqIAQFCBwoFX3V1aWRCBwoFX2Zyb21CBQoDX3RvQgcKBV91c2VyQgoKCF9wcm9qZWN0QgkKB19tZXRob2RCDAoKX3NvdXJjZV9pcEIOCgxfcmVzdWx0X2NvZGVCBwoFX2JvZHlCCAoGX2xpbWl0QggKBl9waGFzZSJjChdBdWRpdFNlcnZpY2VMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESLAoFcXVlcnkYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFF1ZXJ5IkkKGEF1ZGl0U2VydmljZUxpc3RSZXNwb25zZRItCgZ0cmFjZXMYASADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFRyYWNlIpMBChZBdWRpdFNlcnZpY2VHZXRSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBsCzrrECARIWCgR1dWlkGAIgASgJQgi6SAVyA7ABARI7CgVwaGFzZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSACIAQFCCAoGX3BoYXNlIkcKF0F1ZGl0U2VydmljZUdldFJlc3BvbnNlEiwKBXRyYWNlGAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuQXVkaXRUcmFjZSpcCgpBdWRpdFBoYXNlEhsKF0FVRElUX1BIQVNFX1VOU1BFQ0lGSUVEEAASFwoTQVVESVRfUEhBU0VfUkVRVUVTVBABEhgKFEFVRElUX1BIQVNFX1JFU1BPTlNFEAIy4wEKDEF1ZGl0U2VydmljZRJnCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlR2V0UmVzcG9uc2UiCcLzGAEB4PMYAhJqCgRMaXN0EioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlTGlzdFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VMaXN0UmVzcG9uc2UiCcLzGAEB4PMYAkLAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpBdWRpdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi9hdWRpdC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIi0QIKCkF1ZGl0VHJhY2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgR1c2VyGAMgASgJEg4KBnRlbmFudBgEIAEoCRIUCgdwcm9qZWN0GAUgASgJSACIAQESDgoGbWV0aG9kGAYgASgJEhEKBGJvZHkYByABKAlIAYgBARIRCglzb3VyY2VfaXAYCCABKAkSGAoLcmVzdWx0X2NvZGUYCSABKAVIAogBARIsCgVwaGFzZRgKIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2USJQoEbWV0YRgLIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFCCgoIX3Byb2plY3RCBwoFX2JvZHlCDgoMX3Jlc3VsdF9jb2RlIpoECgpBdWRpdFF1ZXJ5EhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESLQoEZnJvbRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIrCgJ0bxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIeCgR1c2VyGAUgASgJQgu6SAhyBsCzrrECAUgDiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSASIAQESHwoGbWV0aG9kGAcgASgJQgq6SAdyBRACGIACSAWIAQESHwoJc291cmNlX2lwGAggASgJQge6SARyAnABSAaIAQESIQoLcmVzdWx0X2NvZGUYCSABKAVCB7pIBBoCKABIB4gBARIdCgRib2R5GAogASgJQgq6SAdyBRACGIACSAiIAQESHgoFbGltaXQYCyABKAVCCrpIBxoFGOgHIABICYgBARI7CgVwaGFzZRgMIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSAqIAQFCBwoFX3V1aWRCBwoFX2Zyb21CBQoDX3RvQgcKBV91c2VyQgoKCF9wcm9qZWN0QgkKB19tZXRob2RCDAoKX3NvdXJjZV9pcEIOCgxfcmVzdWx0X2NvZGVCBwoFX2JvZHlCCAoGX2xpbWl0QggKBl9waGFzZSJjChdBdWRpdFNlcnZpY2VMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESLAoFcXVlcnkYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFF1ZXJ5IkkKGEF1ZGl0U2VydmljZUxpc3RSZXNwb25zZRItCgZ0cmFjZXMYASADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFRyYWNlIpMBChZBdWRpdFNlcnZpY2VHZXRSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBsCzrrECARIWCgR1dWlkGAIgASgJQgi6SAVyA7ABARI7CgVwaGFzZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0UGhhc2VCCLpIBYIBAhABSACIAQFCCAoGX3BoYXNlIkcKF0F1ZGl0U2VydmljZUdldFJlc3BvbnNlEiwKBXRyYWNlGAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuQXVkaXRUcmFjZSpcCgpBdWRpdFBoYXNlEhsKF0FVRElUX1BIQVNFX1VOU1BFQ0lGSUVEEAASFwoTQVVESVRfUEhBU0VfUkVRVUVTVBABEhgKFEFVRElUX1BIQVNFX1JFU1BPTlNFEAIy4wEKDEF1ZGl0U2VydmljZRJnCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlR2V0UmVzcG9uc2UiCcLzGAEB4PMYAhJqCgRMaXN0EioubWV0YWxzdGFjay5hcGkudjIuQXVkaXRTZXJ2aWNlTGlzdFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5BdWRpdFNlcnZpY2VMaXN0UmVzcG9uc2UiCcLzGAEB4PMYAkLAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpBdWRpdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* AuditTrace is an audit trace.
@@ -92,6 +93,13 @@ export type AuditTrace = Message<"metalstack.api.v2.AuditTrace"> & {
* @generated from field: metalstack.api.v2.AuditPhase phase = 10;
*/
phase: AuditPhase;
+
+ /**
+ * Meta for this audit trace
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 11;
+ */
+ meta?: Meta | undefined;
};
/**
diff --git a/js/metalstack/api/v2/common_pb.d.ts b/js/metalstack/api/v2/common_pb.d.ts
index aeae00ba..335a0ea4 100644
--- a/js/metalstack/api/v2/common_pb.d.ts
+++ b/js/metalstack/api/v2/common_pb.d.ts
@@ -81,6 +81,13 @@ export type Meta = Message<"metalstack.api.v2.Meta"> & {
* @generated from field: uint64 generation = 4;
*/
generation: bigint;
+ /**
+ * DeletionTaskID is an optional id that is set to the meta after triggering the deletion.
+ * This can be used by admins to track the deletion progress if necessary.
+ *
+ * @generated from field: optional string deletion_task_id = 5;
+ */
+ deletionTaskId?: string | undefined;
};
/**
* Describes the message metalstack.api.v2.Meta.
diff --git a/js/metalstack/api/v2/common_pb.js b/js/metalstack/api/v2/common_pb.js
index c29ff725..8e2d8fd7 100644
--- a/js/metalstack/api/v2/common_pb.js
+++ b/js/metalstack/api/v2/common_pb.js
@@ -8,7 +8,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/common.proto.
*/
-export const file_metalstack_api_v2_common = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJJCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEg4KBnJlbW92ZRgCIAMoCSKOAQoKVXBkYXRlTWV0YRIuCgp1cGRhdGVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJQChBsb2NraW5nX3N0cmF0ZWd5GAIgASgOMiwubWV0YWxzdGFjay5hcGkudjIuT3B0aW1pc3RpY0xvY2tpbmdTdHJhdGVneUIIukgFggECEAEqhwEKClRlbmFudFJvbGUSGwoXVEVOQU5UX1JPTEVfVU5TUEVDSUZJRUQQABIVChFURU5BTlRfUk9MRV9PV05FUhABEhYKElRFTkFOVF9ST0xFX0VESVRPUhACEhYKElRFTkFOVF9ST0xFX1ZJRVdFUhADEhUKEVRFTkFOVF9ST0xFX0dVRVNUEAQqdQoLUHJvamVjdFJvbGUSHAoYUFJPSkVDVF9ST0xFX1VOU1BFQ0lGSUVEEAASFgoSUFJPSkVDVF9ST0xFX09XTkVSEAESFwoTUFJPSkVDVF9ST0xFX0VESVRPUhACEhcKE1BST0pFQ1RfUk9MRV9WSUVXRVIQAypVCglBZG1pblJvbGUSGgoWQURNSU5fUk9MRV9VTlNQRUNJRklFRBAAEhUKEUFETUlOX1JPTEVfRURJVE9SEAESFQoRQURNSU5fUk9MRV9WSUVXRVIQAipVCglJbmZyYVJvbGUSGgoWSU5GUkFfUk9MRV9VTlNQRUNJRklFRBAAEhUKEUlORlJBX1JPTEVfRURJVE9SEAESFQoRSU5GUkFfUk9MRV9WSUVXRVIQAipdCgtNYWNoaW5lUm9sZRIcChhNQUNISU5FX1JPTEVfVU5TUEVDSUZJRUQQABIXChNNQUNISU5FX1JPTEVfRURJVE9SEAESFwoTTUFDSElORV9ST0xFX1ZJRVdFUhACKlQKClZpc2liaWxpdHkSGgoWVklTSUJJTElUWV9VTlNQRUNJRklFRBAAEhUKEVZJU0lCSUxJVFlfUFVCTElDEAESEwoPVklTSUJJTElUWV9TRUxGEAIqUgoIQXVkaXRpbmcSGAoUQVVESVRJTkdfVU5TUEVDSUZJRUQQABIVChFBVURJVElOR19JTkNMVURFRBABEhUKEUFVRElUSU5HX0VYQ0xVREVEEAIqmAEKGU9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3kSKwonT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASJgoiT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX0NMSUVOVBABEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9TRVJWRVIQAjpiCgx0ZW5hbnRfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi4jgMgAygOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZVILdGVuYW50Um9sZXM6ZQoNcHJvamVjdF9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLmOAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZVIMcHJvamVjdFJvbGVzOl8KC2FkbWluX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuo4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZVIKYWRtaW5Sb2xlczpfCgp2aXNpYmlsaXR5Eh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYu44DIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlZpc2liaWxpdHlSCnZpc2liaWxpdHk6WQoIYXVkaXRpbmcSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi8jgMgASgOMhsubWV0YWxzdGFjay5hcGkudjIuQXVkaXRpbmdSCGF1ZGl0aW5nOl8KC2luZnJhX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvY4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZVIKaW5mcmFSb2xlczplCg1tYWNoaW5lX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvo4DIAMoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlUgxtYWNoaW5lUm9sZXM6TwoRZW51bV9zdHJpbmdfdmFsdWUSIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxiglgMgASgJUg9lbnVtU3RyaW5nVmFsdWVCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILQ29tbW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_common = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIukBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKAQSHQoQZGVsZXRpb25fdGFza19pZBgFIAEoCUgBiAEBQgkKB19sYWJlbHNCEwoRX2RlbGV0aW9uX3Rhc2tfaWQiSQoMVXBkYXRlTGFiZWxzEikKBnVwZGF0ZRgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIOCgZyZW1vdmUYAiADKAkijgEKClVwZGF0ZU1ldGESLgoKdXBkYXRlZF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASUAoQbG9ja2luZ19zdHJhdGVneRgCIAEoDjIsLm1ldGFsc3RhY2suYXBpLnYyLk9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3lCCLpIBYIBAhABKocBCgpUZW5hbnRSb2xlEhsKF1RFTkFOVF9ST0xFX1VOU1BFQ0lGSUVEEAASFQoRVEVOQU5UX1JPTEVfT1dORVIQARIWChJURU5BTlRfUk9MRV9FRElUT1IQAhIWChJURU5BTlRfUk9MRV9WSUVXRVIQAxIVChFURU5BTlRfUk9MRV9HVUVTVBAEKnUKC1Byb2plY3RSb2xlEhwKGFBST0pFQ1RfUk9MRV9VTlNQRUNJRklFRBAAEhYKElBST0pFQ1RfUk9MRV9PV05FUhABEhcKE1BST0pFQ1RfUk9MRV9FRElUT1IQAhIXChNQUk9KRUNUX1JPTEVfVklFV0VSEAMqVQoJQWRtaW5Sb2xlEhoKFkFETUlOX1JPTEVfVU5TUEVDSUZJRUQQABIVChFBRE1JTl9ST0xFX0VESVRPUhABEhUKEUFETUlOX1JPTEVfVklFV0VSEAIqVQoJSW5mcmFSb2xlEhoKFklORlJBX1JPTEVfVU5TUEVDSUZJRUQQABIVChFJTkZSQV9ST0xFX0VESVRPUhABEhUKEUlORlJBX1JPTEVfVklFV0VSEAIqXQoLTWFjaGluZVJvbGUSHAoYTUFDSElORV9ST0xFX1VOU1BFQ0lGSUVEEAASFwoTTUFDSElORV9ST0xFX0VESVRPUhABEhcKE01BQ0hJTkVfUk9MRV9WSUVXRVIQAipUCgpWaXNpYmlsaXR5EhoKFlZJU0lCSUxJVFlfVU5TUEVDSUZJRUQQABIVChFWSVNJQklMSVRZX1BVQkxJQxABEhMKD1ZJU0lCSUxJVFlfU0VMRhACKlIKCEF1ZGl0aW5nEhgKFEFVRElUSU5HX1VOU1BFQ0lGSUVEEAASFQoRQVVESVRJTkdfSU5DTFVERUQQARIVChFBVURJVElOR19FWENMVURFRBACKpgBChlPcHRpbWlzdGljTG9ja2luZ1N0cmF0ZWd5EisKJ09QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9VTlNQRUNJRklFRBAAEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9DTElFTlQQARImCiJPUFRJTUlTVElDX0xPQ0tJTkdfU1RSQVRFR1lfU0VSVkVSEAI6YgoMdGVuYW50X3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuI4DIAMoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVSC3RlbmFudFJvbGVzOmUKDXByb2plY3Rfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi5jgMgAygOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVSDHByb2plY3RSb2xlczpfCgthZG1pbl9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLqOAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVSCmFkbWluUm9sZXM6XwoKdmlzaWJpbGl0eRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLuOAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5WaXNpYmlsaXR5Ugp2aXNpYmlsaXR5OlkKCGF1ZGl0aW5nEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvI4DIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0aW5nUghhdWRpdGluZzpfCgtpbmZyYV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL2OAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVSCmluZnJhUm9sZXM6ZQoNbWFjaGluZV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL6OAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZVIMbWFjaGluZVJvbGVzOk8KEWVudW1fc3RyaW5nX3ZhbHVlEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMYoJYDIAEoCVIPZW51bVN0cmluZ1ZhbHVlQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC0NvbW1vblByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
/**
* Describes the message metalstack.api.v2.Paging.
* Use `create(PagingSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/common_pb.ts b/js/metalstack/api/v2/common_pb.ts
index 0907101f..d271f8ba 100644
--- a/js/metalstack/api/v2/common_pb.ts
+++ b/js/metalstack/api/v2/common_pb.ts
@@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/common.proto.
*/
export const file_metalstack_api_v2_common: GenFile = /*@__PURE__*/
- fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJJCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEg4KBnJlbW92ZRgCIAMoCSKOAQoKVXBkYXRlTWV0YRIuCgp1cGRhdGVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJQChBsb2NraW5nX3N0cmF0ZWd5GAIgASgOMiwubWV0YWxzdGFjay5hcGkudjIuT3B0aW1pc3RpY0xvY2tpbmdTdHJhdGVneUIIukgFggECEAEqhwEKClRlbmFudFJvbGUSGwoXVEVOQU5UX1JPTEVfVU5TUEVDSUZJRUQQABIVChFURU5BTlRfUk9MRV9PV05FUhABEhYKElRFTkFOVF9ST0xFX0VESVRPUhACEhYKElRFTkFOVF9ST0xFX1ZJRVdFUhADEhUKEVRFTkFOVF9ST0xFX0dVRVNUEAQqdQoLUHJvamVjdFJvbGUSHAoYUFJPSkVDVF9ST0xFX1VOU1BFQ0lGSUVEEAASFgoSUFJPSkVDVF9ST0xFX09XTkVSEAESFwoTUFJPSkVDVF9ST0xFX0VESVRPUhACEhcKE1BST0pFQ1RfUk9MRV9WSUVXRVIQAypVCglBZG1pblJvbGUSGgoWQURNSU5fUk9MRV9VTlNQRUNJRklFRBAAEhUKEUFETUlOX1JPTEVfRURJVE9SEAESFQoRQURNSU5fUk9MRV9WSUVXRVIQAipVCglJbmZyYVJvbGUSGgoWSU5GUkFfUk9MRV9VTlNQRUNJRklFRBAAEhUKEUlORlJBX1JPTEVfRURJVE9SEAESFQoRSU5GUkFfUk9MRV9WSUVXRVIQAipdCgtNYWNoaW5lUm9sZRIcChhNQUNISU5FX1JPTEVfVU5TUEVDSUZJRUQQABIXChNNQUNISU5FX1JPTEVfRURJVE9SEAESFwoTTUFDSElORV9ST0xFX1ZJRVdFUhACKlQKClZpc2liaWxpdHkSGgoWVklTSUJJTElUWV9VTlNQRUNJRklFRBAAEhUKEVZJU0lCSUxJVFlfUFVCTElDEAESEwoPVklTSUJJTElUWV9TRUxGEAIqUgoIQXVkaXRpbmcSGAoUQVVESVRJTkdfVU5TUEVDSUZJRUQQABIVChFBVURJVElOR19JTkNMVURFRBABEhUKEUFVRElUSU5HX0VYQ0xVREVEEAIqmAEKGU9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3kSKwonT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASJgoiT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX0NMSUVOVBABEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9TRVJWRVIQAjpiCgx0ZW5hbnRfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi4jgMgAygOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZVILdGVuYW50Um9sZXM6ZQoNcHJvamVjdF9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLmOAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZVIMcHJvamVjdFJvbGVzOl8KC2FkbWluX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuo4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZVIKYWRtaW5Sb2xlczpfCgp2aXNpYmlsaXR5Eh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYu44DIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlZpc2liaWxpdHlSCnZpc2liaWxpdHk6WQoIYXVkaXRpbmcSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi8jgMgASgOMhsubWV0YWxzdGFjay5hcGkudjIuQXVkaXRpbmdSCGF1ZGl0aW5nOl8KC2luZnJhX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvY4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZVIKaW5mcmFSb2xlczplCg1tYWNoaW5lX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvo4DIAMoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlUgxtYWNoaW5lUm9sZXM6TwoRZW51bV9zdHJpbmdfdmFsdWUSIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxiglgMgASgJUg9lbnVtU3RyaW5nVmFsdWVCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILQ29tbW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIukBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKAQSHQoQZGVsZXRpb25fdGFza19pZBgFIAEoCUgBiAEBQgkKB19sYWJlbHNCEwoRX2RlbGV0aW9uX3Rhc2tfaWQiSQoMVXBkYXRlTGFiZWxzEikKBnVwZGF0ZRgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIOCgZyZW1vdmUYAiADKAkijgEKClVwZGF0ZU1ldGESLgoKdXBkYXRlZF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASUAoQbG9ja2luZ19zdHJhdGVneRgCIAEoDjIsLm1ldGFsc3RhY2suYXBpLnYyLk9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3lCCLpIBYIBAhABKocBCgpUZW5hbnRSb2xlEhsKF1RFTkFOVF9ST0xFX1VOU1BFQ0lGSUVEEAASFQoRVEVOQU5UX1JPTEVfT1dORVIQARIWChJURU5BTlRfUk9MRV9FRElUT1IQAhIWChJURU5BTlRfUk9MRV9WSUVXRVIQAxIVChFURU5BTlRfUk9MRV9HVUVTVBAEKnUKC1Byb2plY3RSb2xlEhwKGFBST0pFQ1RfUk9MRV9VTlNQRUNJRklFRBAAEhYKElBST0pFQ1RfUk9MRV9PV05FUhABEhcKE1BST0pFQ1RfUk9MRV9FRElUT1IQAhIXChNQUk9KRUNUX1JPTEVfVklFV0VSEAMqVQoJQWRtaW5Sb2xlEhoKFkFETUlOX1JPTEVfVU5TUEVDSUZJRUQQABIVChFBRE1JTl9ST0xFX0VESVRPUhABEhUKEUFETUlOX1JPTEVfVklFV0VSEAIqVQoJSW5mcmFSb2xlEhoKFklORlJBX1JPTEVfVU5TUEVDSUZJRUQQABIVChFJTkZSQV9ST0xFX0VESVRPUhABEhUKEUlORlJBX1JPTEVfVklFV0VSEAIqXQoLTWFjaGluZVJvbGUSHAoYTUFDSElORV9ST0xFX1VOU1BFQ0lGSUVEEAASFwoTTUFDSElORV9ST0xFX0VESVRPUhABEhcKE01BQ0hJTkVfUk9MRV9WSUVXRVIQAipUCgpWaXNpYmlsaXR5EhoKFlZJU0lCSUxJVFlfVU5TUEVDSUZJRUQQABIVChFWSVNJQklMSVRZX1BVQkxJQxABEhMKD1ZJU0lCSUxJVFlfU0VMRhACKlIKCEF1ZGl0aW5nEhgKFEFVRElUSU5HX1VOU1BFQ0lGSUVEEAASFQoRQVVESVRJTkdfSU5DTFVERUQQARIVChFBVURJVElOR19FWENMVURFRBACKpgBChlPcHRpbWlzdGljTG9ja2luZ1N0cmF0ZWd5EisKJ09QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9VTlNQRUNJRklFRBAAEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9DTElFTlQQARImCiJPUFRJTUlTVElDX0xPQ0tJTkdfU1RSQVRFR1lfU0VSVkVSEAI6YgoMdGVuYW50X3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuI4DIAMoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVSC3RlbmFudFJvbGVzOmUKDXByb2plY3Rfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi5jgMgAygOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVSDHByb2plY3RSb2xlczpfCgthZG1pbl9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLqOAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVSCmFkbWluUm9sZXM6XwoKdmlzaWJpbGl0eRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLuOAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5WaXNpYmlsaXR5Ugp2aXNpYmlsaXR5OlkKCGF1ZGl0aW5nEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvI4DIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0aW5nUghhdWRpdGluZzpfCgtpbmZyYV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL2OAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVSCmluZnJhUm9sZXM6ZQoNbWFjaGluZV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL6OAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZVIMbWFjaGluZVJvbGVzOk8KEWVudW1fc3RyaW5nX3ZhbHVlEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMYoJYDIAEoCVIPZW51bVN0cmluZ1ZhbHVlQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC0NvbW1vblByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
/**
* Paging defines paging for methods with a lot of results
@@ -100,6 +100,14 @@ export type Meta = Message<"metalstack.api.v2.Meta"> & {
* @generated from field: uint64 generation = 4;
*/
generation: bigint;
+
+ /**
+ * DeletionTaskID is an optional id that is set to the meta after triggering the deletion.
+ * This can be used by admins to track the deletion progress if necessary.
+ *
+ * @generated from field: optional string deletion_task_id = 5;
+ */
+ deletionTaskId?: string | undefined;
};
/**
diff --git a/js/metalstack/api/v2/component_pb.d.ts b/js/metalstack/api/v2/component_pb.d.ts
index 73e99136..a1d8bf53 100644
--- a/js/metalstack/api/v2/component_pb.d.ts
+++ b/js/metalstack/api/v2/component_pb.d.ts
@@ -1,5 +1,6 @@
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt";
+import type { Meta } from "./common_pb";
import type { Token } from "./token_pb";
import type { Version } from "./version_pb";
import type { Message } from "@bufbuild/protobuf";
@@ -62,6 +63,12 @@ export type Component = Message<"metalstack.api.v2.Component"> & {
* @generated from field: metalstack.api.v2.Token token = 8;
*/
token?: Token | undefined;
+ /**
+ * Meta for this component
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 9;
+ */
+ meta?: Meta | undefined;
};
/**
* Describes the message metalstack.api.v2.Component.
diff --git a/js/metalstack/api/v2/component_pb.js b/js/metalstack/api/v2/component_pb.js
index 17f76918..42d22ea4 100644
--- a/js/metalstack/api/v2/component_pb.js
+++ b/js/metalstack/api/v2/component_pb.js
@@ -11,7 +11,7 @@ import { file_metalstack_api_v2_version } from "./version_pb";
/**
* Describes the file metalstack/api/v2/component.proto.
*/
-export const file_metalstack_api_v2_component = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FwaS92Mi9jb21wb25lbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIuICCglDb21wb25lbnQSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOAoEdHlwZRgCIAEoDjIgLm1ldGFsc3RhY2suYXBpLnYyLkNvbXBvbmVudFR5cGVCCLpIBYIBAhABEh8KCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBEi4KCnN0YXJ0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3JlcG9ydGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCghpbnRlcnZhbBgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIrCgd2ZXJzaW9uGAcgASgLMhoubWV0YWxzdGFjay5hcGkudjIuVmVyc2lvbhInCgV0b2tlbhgIIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIrMBCg5Db21wb25lbnRRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEj0KBHR5cGUYAiABKA4yIC5tZXRhbHN0YWNrLmFwaS52Mi5Db21wb25lbnRUeXBlQgi6SAWCAQIQAUgBiAEBEiQKCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBSAKIAQFCBwoFX3V1aWRCBwoFX3R5cGVCDQoLX2lkZW50aWZpZXIqjAMKDUNvbXBvbmVudFR5cGUSLwoaQ09NUE9ORU5UX1RZUEVfVU5TUEVDSUZJRUQQABoPgrIZC3Vuc3BlY2lmaWVkEisKGENPTVBPTkVOVF9UWVBFX1BJWElFQ09SRRABGg2CshkJcGl4aWVjb3JlEi0KGUNPTVBPTkVOVF9UWVBFX01FVEFMX0NPUkUQAhoOgrIZCm1ldGFsLWNvcmUSKwoYQ09NUE9ORU5UX1RZUEVfTUVUQUxfQk1DEAMaDYKyGQltZXRhbC1ibWMSRQolQ09NUE9ORU5UX1RZUEVfTUVUQUxfSU1BR0VfQ0FDSEVfU1lOQxAEGhqCshkWbWV0YWwtaW1hZ2UtY2FjaGUtc3luYxIzChxDT01QT05FTlRfVFlQRV9NRVRBTF9DT05TT0xFEAUaEYKyGQ1tZXRhbC1jb25zb2xlEkUKJUNPTVBPTkVOVF9UWVBFX01FVEFMX01FVFJJQ1NfRVhQT1JURVIQBhoagrIZFm1ldGFsLW1ldHJpY3MtZXhwb3J0ZXJCxAEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIOQ29tcG9uZW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token, file_metalstack_api_v2_version]);
+export const file_metalstack_api_v2_component = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FwaS92Mi9jb21wb25lbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIokDCglDb21wb25lbnQSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOAoEdHlwZRgCIAEoDjIgLm1ldGFsc3RhY2suYXBpLnYyLkNvbXBvbmVudFR5cGVCCLpIBYIBAhABEh8KCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBEi4KCnN0YXJ0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3JlcG9ydGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCghpbnRlcnZhbBgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIrCgd2ZXJzaW9uGAcgASgLMhoubWV0YWxzdGFjay5hcGkudjIuVmVyc2lvbhInCgV0b2tlbhgIIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuEiUKBG1ldGEYCSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIrMBCg5Db21wb25lbnRRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEj0KBHR5cGUYAiABKA4yIC5tZXRhbHN0YWNrLmFwaS52Mi5Db21wb25lbnRUeXBlQgi6SAWCAQIQAUgBiAEBEiQKCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBSAKIAQFCBwoFX3V1aWRCBwoFX3R5cGVCDQoLX2lkZW50aWZpZXIqjAMKDUNvbXBvbmVudFR5cGUSLwoaQ09NUE9ORU5UX1RZUEVfVU5TUEVDSUZJRUQQABoPgrIZC3Vuc3BlY2lmaWVkEisKGENPTVBPTkVOVF9UWVBFX1BJWElFQ09SRRABGg2CshkJcGl4aWVjb3JlEi0KGUNPTVBPTkVOVF9UWVBFX01FVEFMX0NPUkUQAhoOgrIZCm1ldGFsLWNvcmUSKwoYQ09NUE9ORU5UX1RZUEVfTUVUQUxfQk1DEAMaDYKyGQltZXRhbC1ibWMSRQolQ09NUE9ORU5UX1RZUEVfTUVUQUxfSU1BR0VfQ0FDSEVfU1lOQxAEGhqCshkWbWV0YWwtaW1hZ2UtY2FjaGUtc3luYxIzChxDT01QT05FTlRfVFlQRV9NRVRBTF9DT05TT0xFEAUaEYKyGQ1tZXRhbC1jb25zb2xlEkUKJUNPTVBPTkVOVF9UWVBFX01FVEFMX01FVFJJQ1NfRVhQT1JURVIQBhoagrIZFm1ldGFsLW1ldHJpY3MtZXhwb3J0ZXJCxAEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIOQ29tcG9uZW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token, file_metalstack_api_v2_version]);
/**
* Describes the message metalstack.api.v2.Component.
* Use `create(ComponentSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/component_pb.ts b/js/metalstack/api/v2/component_pb.ts
index fb1e9e0d..f90977ec 100644
--- a/js/metalstack/api/v2/component_pb.ts
+++ b/js/metalstack/api/v2/component_pb.ts
@@ -7,6 +7,7 @@ import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
+import type { Meta } 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 { Token } from "./token_pb";
@@ -19,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/component.proto.
*/
export const file_metalstack_api_v2_component: GenFile = /*@__PURE__*/
- fileDesc("CiFtZXRhbHN0YWNrL2FwaS92Mi9jb21wb25lbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIuICCglDb21wb25lbnQSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOAoEdHlwZRgCIAEoDjIgLm1ldGFsc3RhY2suYXBpLnYyLkNvbXBvbmVudFR5cGVCCLpIBYIBAhABEh8KCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBEi4KCnN0YXJ0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3JlcG9ydGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCghpbnRlcnZhbBgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIrCgd2ZXJzaW9uGAcgASgLMhoubWV0YWxzdGFjay5hcGkudjIuVmVyc2lvbhInCgV0b2tlbhgIIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIrMBCg5Db21wb25lbnRRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEj0KBHR5cGUYAiABKA4yIC5tZXRhbHN0YWNrLmFwaS52Mi5Db21wb25lbnRUeXBlQgi6SAWCAQIQAUgBiAEBEiQKCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBSAKIAQFCBwoFX3V1aWRCBwoFX3R5cGVCDQoLX2lkZW50aWZpZXIqjAMKDUNvbXBvbmVudFR5cGUSLwoaQ09NUE9ORU5UX1RZUEVfVU5TUEVDSUZJRUQQABoPgrIZC3Vuc3BlY2lmaWVkEisKGENPTVBPTkVOVF9UWVBFX1BJWElFQ09SRRABGg2CshkJcGl4aWVjb3JlEi0KGUNPTVBPTkVOVF9UWVBFX01FVEFMX0NPUkUQAhoOgrIZCm1ldGFsLWNvcmUSKwoYQ09NUE9ORU5UX1RZUEVfTUVUQUxfQk1DEAMaDYKyGQltZXRhbC1ibWMSRQolQ09NUE9ORU5UX1RZUEVfTUVUQUxfSU1BR0VfQ0FDSEVfU1lOQxAEGhqCshkWbWV0YWwtaW1hZ2UtY2FjaGUtc3luYxIzChxDT01QT05FTlRfVFlQRV9NRVRBTF9DT05TT0xFEAUaEYKyGQ1tZXRhbC1jb25zb2xlEkUKJUNPTVBPTkVOVF9UWVBFX01FVEFMX01FVFJJQ1NfRVhQT1JURVIQBhoagrIZFm1ldGFsLW1ldHJpY3MtZXhwb3J0ZXJCxAEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIOQ29tcG9uZW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token, file_metalstack_api_v2_version]);
+ fileDesc("CiFtZXRhbHN0YWNrL2FwaS92Mi9jb21wb25lbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIokDCglDb21wb25lbnQSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOAoEdHlwZRgCIAEoDjIgLm1ldGFsc3RhY2suYXBpLnYyLkNvbXBvbmVudFR5cGVCCLpIBYIBAhABEh8KCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBEi4KCnN0YXJ0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3JlcG9ydGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCghpbnRlcnZhbBgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIrCgd2ZXJzaW9uGAcgASgLMhoubWV0YWxzdGFjay5hcGkudjIuVmVyc2lvbhInCgV0b2tlbhgIIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuEiUKBG1ldGEYCSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIrMBCg5Db21wb25lbnRRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEj0KBHR5cGUYAiABKA4yIC5tZXRhbHN0YWNrLmFwaS52Mi5Db21wb25lbnRUeXBlQgi6SAWCAQIQAUgBiAEBEiQKCmlkZW50aWZpZXIYAyABKAlCC7pICHIGwLOusQIBSAKIAQFCBwoFX3V1aWRCBwoFX3R5cGVCDQoLX2lkZW50aWZpZXIqjAMKDUNvbXBvbmVudFR5cGUSLwoaQ09NUE9ORU5UX1RZUEVfVU5TUEVDSUZJRUQQABoPgrIZC3Vuc3BlY2lmaWVkEisKGENPTVBPTkVOVF9UWVBFX1BJWElFQ09SRRABGg2CshkJcGl4aWVjb3JlEi0KGUNPTVBPTkVOVF9UWVBFX01FVEFMX0NPUkUQAhoOgrIZCm1ldGFsLWNvcmUSKwoYQ09NUE9ORU5UX1RZUEVfTUVUQUxfQk1DEAMaDYKyGQltZXRhbC1ibWMSRQolQ09NUE9ORU5UX1RZUEVfTUVUQUxfSU1BR0VfQ0FDSEVfU1lOQxAEGhqCshkWbWV0YWwtaW1hZ2UtY2FjaGUtc3luYxIzChxDT01QT05FTlRfVFlQRV9NRVRBTF9DT05TT0xFEAUaEYKyGQ1tZXRhbC1jb25zb2xlEkUKJUNPTVBPTkVOVF9UWVBFX01FVEFMX01FVFJJQ1NfRVhQT1JURVIQBhoagrIZFm1ldGFsLW1ldHJpY3MtZXhwb3J0ZXJCxAEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIOQ29tcG9uZW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token, file_metalstack_api_v2_version]);
/**
* Component represents a microservice connected to our apiserver
@@ -83,6 +84,13 @@ export type Component = Message<"metalstack.api.v2.Component"> & {
* @generated from field: metalstack.api.v2.Token token = 8;
*/
token?: Token | undefined;
+
+ /**
+ * Meta for this component
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 9;
+ */
+ meta?: Meta | undefined;
};
/**
diff --git a/js/metalstack/api/v2/project_pb.d.ts b/js/metalstack/api/v2/project_pb.d.ts
index 61ad3cca..ca360dad 100644
--- a/js/metalstack/api/v2/project_pb.d.ts
+++ b/js/metalstack/api/v2/project_pb.d.ts
@@ -87,6 +87,12 @@ export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & {
* @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.
diff --git a/js/metalstack/api/v2/project_pb.js b/js/metalstack/api/v2/project_pb.js
index ff96d05f..70c34ba5 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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiKzAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIqEBCg1Qcm9qZWN0TWVtYmVyEgoKAmlkGAEgASgJEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESHAoUaW5oZXJpdGVkX21lbWJlcnNoaXAYAyABKAgSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAikgIKDVByb2plY3RJbnZpdGUSDgoGc2VjcmV0GAEgASgJEg8KB3Byb2plY3QYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSFAoMcHJvamVjdF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsQBChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIoMBChlQcm9qZWN0U2VydmljZUdldFJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0EjkKD3Byb2plY3RfbWVtYmVycxgCIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiyQEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEhcKCmF2YXRhcl91cmwYBCABKAlIAIgBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDQoLX2F2YXRhcl91cmwiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSwocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCK9AgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSIkCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIoYBCiFQcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiXgoiUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLiDAoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJxCgVMZWF2ZRItLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnK8xgBA+DzGAEShgEKDFJlbW92ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMVXBkYXRlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEnQKBkludml0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcrzGAEB4PMYARKFAQoMSW52aXRlQWNjZXB0EjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYAuDzGAEShgEKDEludml0ZURlbGV0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARKDAQoLSW52aXRlc0xpc3QSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJyvMYAQHg8xgCEnwKCUludml0ZUdldBIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGALg8xgCQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDFByb2plY3RQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiKzAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIsgBCg1Qcm9qZWN0TWVtYmVyEgoKAmlkGAEgASgJEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESHAoUaW5oZXJpdGVkX21lbWJlcnNoaXAYAyABKAgSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoEbWV0YRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGEikgIKDVByb2plY3RJbnZpdGUSDgoGc2VjcmV0GAEgASgJEg8KB3Byb2plY3QYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSFAoMcHJvamVjdF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsQBChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIoMBChlQcm9qZWN0U2VydmljZUdldFJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0EjkKD3Byb2plY3RfbWVtYmVycxgCIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiyQEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEhcKCmF2YXRhcl91cmwYBCABKAlIAIgBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDQoLX2F2YXRhcl91cmwiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSwocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCK9AgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSIkCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIoYBCiFQcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiXgoiUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLiDAoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJxCgVMZWF2ZRItLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnK8xgBA+DzGAEShgEKDFJlbW92ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMVXBkYXRlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEnQKBkludml0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcrzGAEB4PMYARKFAQoMSW52aXRlQWNjZXB0EjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYAuDzGAEShgEKDEludml0ZURlbGV0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARKDAQoLSW52aXRlc0xpc3QSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJyvMYAQHg8xgCEnwKCUludml0ZUdldBIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGALg8xgCQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDFByb2plY3RQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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 7aab346d..d91a9cec 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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiKzAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIqEBCg1Qcm9qZWN0TWVtYmVyEgoKAmlkGAEgASgJEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESHAoUaW5oZXJpdGVkX21lbWJlcnNoaXAYAyABKAgSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAikgIKDVByb2plY3RJbnZpdGUSDgoGc2VjcmV0GAEgASgJEg8KB3Byb2plY3QYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSFAoMcHJvamVjdF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsQBChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIoMBChlQcm9qZWN0U2VydmljZUdldFJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0EjkKD3Byb2plY3RfbWVtYmVycxgCIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiyQEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEhcKCmF2YXRhcl91cmwYBCABKAlIAIgBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDQoLX2F2YXRhcl91cmwiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSwocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCK9AgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSIkCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIoYBCiFQcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiXgoiUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLiDAoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJxCgVMZWF2ZRItLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnK8xgBA+DzGAEShgEKDFJlbW92ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMVXBkYXRlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEnQKBkludml0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcrzGAEB4PMYARKFAQoMSW52aXRlQWNjZXB0EjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYAuDzGAEShgEKDEludml0ZURlbGV0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARKDAQoLSW52aXRlc0xpc3QSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJyvMYAQHg8xgCEnwKCUludml0ZUdldBIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGALg8xgCQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDFByb2plY3RQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiKzAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIsgBCg1Qcm9qZWN0TWVtYmVyEgoKAmlkGAEgASgJEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESHAoUaW5oZXJpdGVkX21lbWJlcnNoaXAYAyABKAgSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoEbWV0YRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGEikgIKDVByb2plY3RJbnZpdGUSDgoGc2VjcmV0GAEgASgJEg8KB3Byb2plY3QYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSFAoMcHJvamVjdF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsQBChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIoMBChlQcm9qZWN0U2VydmljZUdldFJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0EjkKD3Byb2plY3RfbWVtYmVycxgCIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiyQEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEhcKCmF2YXRhcl91cmwYBCABKAlIAIgBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDQoLX2F2YXRhcl91cmwiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSwocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCK9AgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSIkCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIoYBCiFQcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiXgoiUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLiDAoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJxCgVMZWF2ZRItLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnK8xgBA+DzGAEShgEKDFJlbW92ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMVXBkYXRlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEnQKBkludml0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcrzGAEB4PMYARKFAQoMSW52aXRlQWNjZXB0EjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYAuDzGAEShgEKDEludml0ZURlbGV0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARKDAQoLSW52aXRlc0xpc3QSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJyvMYAQHg8xgCEnwKCUludml0ZUdldBIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGALg8xgCQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDFByb2plY3RQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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
@@ -110,6 +110,13 @@ export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & {
* @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;
};
/**
diff --git a/js/metalstack/api/v2/tenant_pb.d.ts b/js/metalstack/api/v2/tenant_pb.d.ts
index 0e95dd27..508f7071 100644
--- a/js/metalstack/api/v2/tenant_pb.d.ts
+++ b/js/metalstack/api/v2/tenant_pb.d.ts
@@ -90,6 +90,12 @@ export type TenantMember = Message<"metalstack.api.v2.TenantMember"> & {
* @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.
diff --git a/js/metalstack/api/v2/tenant_pb.js b/js/metalstack/api/v2/tenant_pb.js
index 9700568b..18538c94 100644
--- a/js/metalstack/api/v2/tenant_pb.js
+++ b/js/metalstack/api/v2/tenant_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/tenant.proto.
*/
-export const file_metalstack_api_v2_tenant = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIrIBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSKTAQoMVGVuYW50TWVtYmVyEgoKAmlkGAEgASgJEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpYBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSDwoCaWQYASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBQgUKA19pZEIHCgVfbmFtZUIJCgdfbGFiZWxzIigKF1RlbmFudFNlcnZpY2VHZXRSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIugBChpUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIlCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgFIAIgBARIbCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCLXAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARI0CgZsYWJlbHMYByABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiKwoaVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkifgoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBI3Cg50ZW5hbnRfbWVtYmVycxgCIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJHChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEioKB3RlbmFudHMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiYgoaVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiMAofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSJUCiBUZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIwCgdpbnZpdGVzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIi8KHVRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJRCh5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USLwoGaW52aXRlGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIkEKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCSIqChlUZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJBCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBINCgVsb2dpbhgBIAEoCRIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIngKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCRI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWwohVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyxwwKDVRlbmFudFNlcnZpY2UScQoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCNjzGALg8xgBEmsKBExpc3QSKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgC4PMYAhJsCgNHZXQSKi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXNwb25zZSIMwvMYBAECAwTg8xgCEnMKBlVwZGF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEnMKBkRlbGV0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEm8KBUxlYXZlEiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnC8xgBA+DzGAEShAEKDFJlbW92ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEShAEKDFVwZGF0ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEScgoGSW52aXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcLzGAEB4PMYARKDAQoMSW52aXRlQWNjZXB0EjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGALg8xgBEoQBCgxJbnZpdGVEZWxldGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJwvMYAQHg8xgBEoEBCgtJbnZpdGVzTGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJwvMYAQHg8xgCEnoKCUludml0ZUdldBIwLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjEubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgC4PMYAkLBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtUZW5hbnRQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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_tenant = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIrIBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSK6AQoMVGVuYW50TWVtYmVyEgoKAmlkGAEgASgJEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgRtZXRhGAUgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YSKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpYBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSDwoCaWQYASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBQgUKA19pZEIHCgVfbmFtZUIJCgdfbGFiZWxzIigKF1RlbmFudFNlcnZpY2VHZXRSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIugBChpUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIlCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgFIAIgBARIbCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCLXAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARI0CgZsYWJlbHMYByABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiKwoaVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkifgoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBI3Cg50ZW5hbnRfbWVtYmVycxgCIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJHChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEioKB3RlbmFudHMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiYgoaVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiMAofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSJUCiBUZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIwCgdpbnZpdGVzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIi8KHVRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJRCh5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USLwoGaW52aXRlGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIkEKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCSIqChlUZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJBCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBINCgVsb2dpbhgBIAEoCRIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIngKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCRI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWwohVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyxwwKDVRlbmFudFNlcnZpY2UScQoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCNjzGALg8xgBEmsKBExpc3QSKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgC4PMYAhJsCgNHZXQSKi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXNwb25zZSIMwvMYBAECAwTg8xgCEnMKBlVwZGF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEnMKBkRlbGV0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEm8KBUxlYXZlEiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnC8xgBA+DzGAEShAEKDFJlbW92ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEShAEKDFVwZGF0ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEScgoGSW52aXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcLzGAEB4PMYARKDAQoMSW52aXRlQWNjZXB0EjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGALg8xgBEoQBCgxJbnZpdGVEZWxldGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJwvMYAQHg8xgBEoEBCgtJbnZpdGVzTGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJwvMYAQHg8xgCEnoKCUludml0ZUdldBIwLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjEubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgC4PMYAkLBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtUZW5hbnRQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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.Tenant.
* Use `create(TenantSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/tenant_pb.ts b/js/metalstack/api/v2/tenant_pb.ts
index b5785007..11f73e65 100644
--- a/js/metalstack/api/v2/tenant_pb.ts
+++ b/js/metalstack/api/v2/tenant_pb.ts
@@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/tenant.proto.
*/
export const file_metalstack_api_v2_tenant: GenFile = /*@__PURE__*/
- fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIrIBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSKTAQoMVGVuYW50TWVtYmVyEgoKAmlkGAEgASgJEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpYBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSDwoCaWQYASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBQgUKA19pZEIHCgVfbmFtZUIJCgdfbGFiZWxzIigKF1RlbmFudFNlcnZpY2VHZXRSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIugBChpUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIlCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgFIAIgBARIbCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCLXAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARI0CgZsYWJlbHMYByABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiKwoaVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkifgoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBI3Cg50ZW5hbnRfbWVtYmVycxgCIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJHChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEioKB3RlbmFudHMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiYgoaVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiMAofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSJUCiBUZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIwCgdpbnZpdGVzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIi8KHVRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJRCh5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USLwoGaW52aXRlGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIkEKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCSIqChlUZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJBCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBINCgVsb2dpbhgBIAEoCRIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIngKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCRI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWwohVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyxwwKDVRlbmFudFNlcnZpY2UScQoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCNjzGALg8xgBEmsKBExpc3QSKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgC4PMYAhJsCgNHZXQSKi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXNwb25zZSIMwvMYBAECAwTg8xgCEnMKBlVwZGF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEnMKBkRlbGV0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEm8KBUxlYXZlEiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnC8xgBA+DzGAEShAEKDFJlbW92ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEShAEKDFVwZGF0ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEScgoGSW52aXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcLzGAEB4PMYARKDAQoMSW52aXRlQWNjZXB0EjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGALg8xgBEoQBCgxJbnZpdGVEZWxldGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJwvMYAQHg8xgBEoEBCgtJbnZpdGVzTGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJwvMYAQHg8xgCEnoKCUludml0ZUdldBIwLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjEubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgC4PMYAkLBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtUZW5hbnRQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIrIBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSK6AQoMVGVuYW50TWVtYmVyEgoKAmlkGAEgASgJEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgRtZXRhGAUgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YSKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpYBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSDwoCaWQYASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBQgUKA19pZEIHCgVfbmFtZUIJCgdfbGFiZWxzIigKF1RlbmFudFNlcnZpY2VHZXRSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIugBChpUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIlCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgFIAIgBARIbCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCLXAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARI0CgZsYWJlbHMYByABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiKwoaVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkifgoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBI3Cg50ZW5hbnRfbWVtYmVycxgCIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJHChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEioKB3RlbmFudHMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiYgoaVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiMAofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSJUCiBUZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIwCgdpbnZpdGVzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIi8KHVRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJRCh5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USLwoGaW52aXRlGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIkEKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCSIqChlUZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJBCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBINCgVsb2dpbhgBIAEoCRIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIngKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCRI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWwohVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyxwwKDVRlbmFudFNlcnZpY2UScQoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCNjzGALg8xgBEmsKBExpc3QSKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgC4PMYAhJsCgNHZXQSKi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXNwb25zZSIMwvMYBAECAwTg8xgCEnMKBlVwZGF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEnMKBkRlbGV0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEm8KBUxlYXZlEiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnC8xgBA+DzGAEShAEKDFJlbW92ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEShAEKDFVwZGF0ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEScgoGSW52aXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcLzGAEB4PMYARKDAQoMSW52aXRlQWNjZXB0EjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGALg8xgBEoQBCgxJbnZpdGVEZWxldGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJwvMYAQHg8xgBEoEBCgtJbnZpdGVzTGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJwvMYAQHg8xgCEnoKCUludml0ZUdldBIwLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjEubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgC4PMYAkLBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtUZW5hbnRQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* Tenant is a customer of the platform
@@ -114,6 +114,13 @@ export type TenantMember = Message<"metalstack.api.v2.TenantMember"> & {
* @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;
};
/**
diff --git a/proto/metalstack/api/v2/audit.proto b/proto/metalstack/api/v2/audit.proto
index db323742..549d3010 100644
--- a/proto/metalstack/api/v2/audit.proto
+++ b/proto/metalstack/api/v2/audit.proto
@@ -53,6 +53,8 @@ message AuditTrace {
optional int32 result_code = 9;
// Phase represents the phase of the audit trace
AuditPhase phase = 10;
+ // Meta for this audit trace
+ Meta meta = 11;
}
// AuditQuery is the query for audit traces
diff --git a/proto/metalstack/api/v2/common.proto b/proto/metalstack/api/v2/common.proto
index 14d46877..81ba2619 100644
--- a/proto/metalstack/api/v2/common.proto
+++ b/proto/metalstack/api/v2/common.proto
@@ -153,6 +153,9 @@ message Meta {
google.protobuf.Timestamp updated_at = 3;
// Generation identifies how often this entity was modified since creation.
uint64 generation = 4;
+ // DeletionTaskID is an optional id that is set to the meta after triggering the deletion.
+ // This can be used by admins to track the deletion progress if necessary.
+ optional string deletion_task_id = 5;
}
// UpdateLabels is a message to update labels
diff --git a/proto/metalstack/api/v2/component.proto b/proto/metalstack/api/v2/component.proto
index 53398529..94d72e51 100644
--- a/proto/metalstack/api/v2/component.proto
+++ b/proto/metalstack/api/v2/component.proto
@@ -29,6 +29,8 @@ message Component {
metalstack.api.v2.Version version = 7;
// Token is the token which is actually used by this microservice.
Token token = 8;
+ // Meta for this component
+ Meta meta = 9;
}
// ComponentQuery to query components
diff --git a/proto/metalstack/api/v2/project.proto b/proto/metalstack/api/v2/project.proto
index 0a29498b..5992f421 100644
--- a/proto/metalstack/api/v2/project.proto
+++ b/proto/metalstack/api/v2/project.proto
@@ -109,6 +109,8 @@ message ProjectMember {
bool inherited_membership = 3;
// CreatedAt the date when the member was added to the project
google.protobuf.Timestamp created_at = 4;
+ // Meta for this project member
+ Meta meta = 5;
}
// ProjectInvite defines invite to project
diff --git a/proto/metalstack/api/v2/tenant.proto b/proto/metalstack/api/v2/tenant.proto
index 00ad36f3..e5979bb1 100644
--- a/proto/metalstack/api/v2/tenant.proto
+++ b/proto/metalstack/api/v2/tenant.proto
@@ -113,6 +113,8 @@ message TenantMember {
repeated string projects = 3;
// CreatedAt the date when the member was added to the tenant
google.protobuf.Timestamp created_at = 4;
+ // Meta for this tenant member
+ Meta meta = 5;
}
// TenantInvite defines invite to tenant
diff --git a/python/metalstack/api/v2/audit_pb2.py b/python/metalstack/api/v2/audit_pb2.py
index 47950da6..99d71169 100644
--- a/python/metalstack/api/v2/audit_pb2.py
+++ b/python/metalstack/api/v2/audit_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\x1dmetalstack/api/v2/audit.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\"\xfd\x02\n\nAuditTrace\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x38\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimestamp\x12\x12\n\x04user\x18\x03 \x01(\tR\x04user\x12\x16\n\x06tenant\x18\x04 \x01(\tR\x06tenant\x12\x1d\n\x07project\x18\x05 \x01(\tH\x00R\x07project\x88\x01\x01\x12\x16\n\x06method\x18\x06 \x01(\tR\x06method\x12\x17\n\x04\x62ody\x18\x07 \x01(\tH\x01R\x04\x62ody\x88\x01\x01\x12\x1b\n\tsource_ip\x18\x08 \x01(\tR\x08sourceIp\x12$\n\x0bresult_code\x18\t \x01(\x05H\x02R\nresultCode\x88\x01\x01\x12\x33\n\x05phase\x18\n \x01(\x0e\x32\x1d.metalstack.api.v2.AuditPhaseR\x05phaseB\n\n\x08_projectB\x07\n\x05_bodyB\x0e\n\x0c_result_code\"\xeb\x04\n\nAuditQuery\x12!\n\x04uuid\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x33\n\x04\x66rom\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x04\x66rom\x88\x01\x01\x12/\n\x02to\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x02to\x88\x01\x01\x12$\n\x04user\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x04user\x88\x01\x01\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12\'\n\x06method\x18\x07 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x02H\x05R\x06method\x88\x01\x01\x12)\n\tsource_ip\x18\x08 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x06R\x08sourceIp\x88\x01\x01\x12-\n\x0bresult_code\x18\t \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x00H\x07R\nresultCode\x88\x01\x01\x12#\n\x04\x62ody\x18\n \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x02H\x08R\x04\x62ody\x88\x01\x01\x12%\n\x05limit\x18\x0b \x01(\x05\x42\n\xbaH\x07\x1a\x05\x18\xe8\x07 \x00H\tR\x05limit\x88\x01\x01\x12\x42\n\x05phase\x18\x0c \x01(\x0e\x32\x1d.metalstack.api.v2.AuditPhaseB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\x05phase\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_fromB\x05\n\x03_toB\x07\n\x05_userB\n\n\x08_projectB\t\n\x07_methodB\x0c\n\n_source_ipB\x0e\n\x0c_result_codeB\x07\n\x05_bodyB\x08\n\x06_limitB\x08\n\x06_phase\"q\n\x17\x41uditServiceListRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x33\n\x05query\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.AuditQueryR\x05query\"Q\n\x18\x41uditServiceListResponse\x12\x35\n\x06traces\x18\x01 \x03(\x0b\x32\x1d.metalstack.api.v2.AuditTraceR\x06traces\"\xa7\x01\n\x16\x41uditServiceGetRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1c\n\x04uuid\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x42\n\x05phase\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.AuditPhaseB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x05phase\x88\x01\x01\x42\x08\n\x06_phase\"N\n\x17\x41uditServiceGetResponse\x12\x33\n\x05trace\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.AuditTraceR\x05trace*\\\n\nAuditPhase\x12\x1b\n\x17\x41UDIT_PHASE_UNSPECIFIED\x10\x00\x12\x17\n\x13\x41UDIT_PHASE_REQUEST\x10\x01\x12\x18\n\x14\x41UDIT_PHASE_RESPONSE\x10\x02\x32\xe3\x01\n\x0c\x41uditService\x12g\n\x03Get\x12).metalstack.api.v2.AuditServiceGetRequest\x1a*.metalstack.api.v2.AuditServiceGetResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12j\n\x04List\x12*.metalstack.api.v2.AuditServiceListRequest\x1a+.metalstack.api.v2.AuditServiceListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x42\xc0\x01\n\x15\x63om.metalstack.api.v2B\nAuditProtoP\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\x1dmetalstack/api/v2/audit.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\"\xaa\x03\n\nAuditTrace\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x38\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimestamp\x12\x12\n\x04user\x18\x03 \x01(\tR\x04user\x12\x16\n\x06tenant\x18\x04 \x01(\tR\x06tenant\x12\x1d\n\x07project\x18\x05 \x01(\tH\x00R\x07project\x88\x01\x01\x12\x16\n\x06method\x18\x06 \x01(\tR\x06method\x12\x17\n\x04\x62ody\x18\x07 \x01(\tH\x01R\x04\x62ody\x88\x01\x01\x12\x1b\n\tsource_ip\x18\x08 \x01(\tR\x08sourceIp\x12$\n\x0bresult_code\x18\t \x01(\x05H\x02R\nresultCode\x88\x01\x01\x12\x33\n\x05phase\x18\n \x01(\x0e\x32\x1d.metalstack.api.v2.AuditPhaseR\x05phase\x12+\n\x04meta\x18\x0b \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04metaB\n\n\x08_projectB\x07\n\x05_bodyB\x0e\n\x0c_result_code\"\xeb\x04\n\nAuditQuery\x12!\n\x04uuid\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x33\n\x04\x66rom\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x04\x66rom\x88\x01\x01\x12/\n\x02to\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x02to\x88\x01\x01\x12$\n\x04user\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x04user\x88\x01\x01\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12\'\n\x06method\x18\x07 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x02H\x05R\x06method\x88\x01\x01\x12)\n\tsource_ip\x18\x08 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x06R\x08sourceIp\x88\x01\x01\x12-\n\x0bresult_code\x18\t \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x00H\x07R\nresultCode\x88\x01\x01\x12#\n\x04\x62ody\x18\n \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x02H\x08R\x04\x62ody\x88\x01\x01\x12%\n\x05limit\x18\x0b \x01(\x05\x42\n\xbaH\x07\x1a\x05\x18\xe8\x07 \x00H\tR\x05limit\x88\x01\x01\x12\x42\n\x05phase\x18\x0c \x01(\x0e\x32\x1d.metalstack.api.v2.AuditPhaseB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\x05phase\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_fromB\x05\n\x03_toB\x07\n\x05_userB\n\n\x08_projectB\t\n\x07_methodB\x0c\n\n_source_ipB\x0e\n\x0c_result_codeB\x07\n\x05_bodyB\x08\n\x06_limitB\x08\n\x06_phase\"q\n\x17\x41uditServiceListRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x33\n\x05query\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.AuditQueryR\x05query\"Q\n\x18\x41uditServiceListResponse\x12\x35\n\x06traces\x18\x01 \x03(\x0b\x32\x1d.metalstack.api.v2.AuditTraceR\x06traces\"\xa7\x01\n\x16\x41uditServiceGetRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1c\n\x04uuid\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x42\n\x05phase\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.AuditPhaseB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x05phase\x88\x01\x01\x42\x08\n\x06_phase\"N\n\x17\x41uditServiceGetResponse\x12\x33\n\x05trace\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.AuditTraceR\x05trace*\\\n\nAuditPhase\x12\x1b\n\x17\x41UDIT_PHASE_UNSPECIFIED\x10\x00\x12\x17\n\x13\x41UDIT_PHASE_REQUEST\x10\x01\x12\x18\n\x14\x41UDIT_PHASE_RESPONSE\x10\x02\x32\xe3\x01\n\x0c\x41uditService\x12g\n\x03Get\x12).metalstack.api.v2.AuditServiceGetRequest\x1a*.metalstack.api.v2.AuditServiceGetResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12j\n\x04List\x12*.metalstack.api.v2.AuditServiceListRequest\x1a+.metalstack.api.v2.AuditServiceListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x42\xc0\x01\n\x15\x63om.metalstack.api.v2B\nAuditProtoP\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)
@@ -68,20 +68,20 @@
_globals['_AUDITSERVICE'].methods_by_name['Get']._serialized_options = b'\302\363\030\001\001\340\363\030\002'
_globals['_AUDITSERVICE'].methods_by_name['List']._loaded_options = None
_globals['_AUDITSERVICE'].methods_by_name['List']._serialized_options = b'\302\363\030\001\001\340\363\030\002'
- _globals['_AUDITPHASE']._serialized_start=1642
- _globals['_AUDITPHASE']._serialized_end=1734
+ _globals['_AUDITPHASE']._serialized_start=1687
+ _globals['_AUDITPHASE']._serialized_end=1779
_globals['_AUDITTRACE']._serialized_start=189
- _globals['_AUDITTRACE']._serialized_end=570
- _globals['_AUDITQUERY']._serialized_start=573
- _globals['_AUDITQUERY']._serialized_end=1192
- _globals['_AUDITSERVICELISTREQUEST']._serialized_start=1194
- _globals['_AUDITSERVICELISTREQUEST']._serialized_end=1307
- _globals['_AUDITSERVICELISTRESPONSE']._serialized_start=1309
- _globals['_AUDITSERVICELISTRESPONSE']._serialized_end=1390
- _globals['_AUDITSERVICEGETREQUEST']._serialized_start=1393
- _globals['_AUDITSERVICEGETREQUEST']._serialized_end=1560
- _globals['_AUDITSERVICEGETRESPONSE']._serialized_start=1562
- _globals['_AUDITSERVICEGETRESPONSE']._serialized_end=1640
- _globals['_AUDITSERVICE']._serialized_start=1737
- _globals['_AUDITSERVICE']._serialized_end=1964
+ _globals['_AUDITTRACE']._serialized_end=615
+ _globals['_AUDITQUERY']._serialized_start=618
+ _globals['_AUDITQUERY']._serialized_end=1237
+ _globals['_AUDITSERVICELISTREQUEST']._serialized_start=1239
+ _globals['_AUDITSERVICELISTREQUEST']._serialized_end=1352
+ _globals['_AUDITSERVICELISTRESPONSE']._serialized_start=1354
+ _globals['_AUDITSERVICELISTRESPONSE']._serialized_end=1435
+ _globals['_AUDITSERVICEGETREQUEST']._serialized_start=1438
+ _globals['_AUDITSERVICEGETREQUEST']._serialized_end=1605
+ _globals['_AUDITSERVICEGETRESPONSE']._serialized_start=1607
+ _globals['_AUDITSERVICEGETRESPONSE']._serialized_end=1685
+ _globals['_AUDITSERVICE']._serialized_start=1782
+ _globals['_AUDITSERVICE']._serialized_end=2009
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/audit_pb2.pyi b/python/metalstack/api/v2/audit_pb2.pyi
index d8972771..13398cfa 100644
--- a/python/metalstack/api/v2/audit_pb2.pyi
+++ b/python/metalstack/api/v2/audit_pb2.pyi
@@ -23,7 +23,7 @@ AUDIT_PHASE_REQUEST: AuditPhase
AUDIT_PHASE_RESPONSE: AuditPhase
class AuditTrace(_message.Message):
- __slots__ = ("uuid", "timestamp", "user", "tenant", "project", "method", "body", "source_ip", "result_code", "phase")
+ __slots__ = ("uuid", "timestamp", "user", "tenant", "project", "method", "body", "source_ip", "result_code", "phase", "meta")
UUID_FIELD_NUMBER: _ClassVar[int]
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
USER_FIELD_NUMBER: _ClassVar[int]
@@ -34,6 +34,7 @@ class AuditTrace(_message.Message):
SOURCE_IP_FIELD_NUMBER: _ClassVar[int]
RESULT_CODE_FIELD_NUMBER: _ClassVar[int]
PHASE_FIELD_NUMBER: _ClassVar[int]
+ META_FIELD_NUMBER: _ClassVar[int]
uuid: str
timestamp: _timestamp_pb2.Timestamp
user: str
@@ -44,7 +45,8 @@ class AuditTrace(_message.Message):
source_ip: str
result_code: int
phase: AuditPhase
- def __init__(self, uuid: _Optional[str] = ..., timestamp: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., user: _Optional[str] = ..., tenant: _Optional[str] = ..., project: _Optional[str] = ..., method: _Optional[str] = ..., body: _Optional[str] = ..., source_ip: _Optional[str] = ..., result_code: _Optional[int] = ..., phase: _Optional[_Union[AuditPhase, str]] = ...) -> None: ...
+ meta: _common_pb2.Meta
+ def __init__(self, uuid: _Optional[str] = ..., timestamp: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., user: _Optional[str] = ..., tenant: _Optional[str] = ..., project: _Optional[str] = ..., method: _Optional[str] = ..., body: _Optional[str] = ..., source_ip: _Optional[str] = ..., result_code: _Optional[int] = ..., phase: _Optional[_Union[AuditPhase, str]] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ...) -> None: ...
class AuditQuery(_message.Message):
__slots__ = ("uuid", "to", "user", "project", "method", "source_ip", "result_code", "body", "limit", "phase")
diff --git a/python/metalstack/api/v2/common_pb2.py b/python/metalstack/api/v2/common_pb2.py
index c7641ca6..f2232f54 100644
--- a/python/metalstack/api/v2/common_pb2.py
+++ b/python/metalstack/api/v2/common_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\x1emetalstack/api/v2/common.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a google/protobuf/descriptor.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(metalstack/api/v2/predefined_rules.proto\"O\n\x06Paging\x12\x17\n\x04page\x18\x01 \x01(\x04H\x00R\x04page\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x04H\x01R\x05\x63ount\x88\x01\x01\x42\x07\n\x05_pageB\x08\n\x06_count\"\xa2\x01\n\x06Labels\x12]\n\x06labels\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.Labels.LabelsEntryB\x1e\xbaH\x1b\x9a\x01\x18\"\x07r\x05\x10\x01\x18\x80\x02*\x07r\x05\x10\x00\x18\x80\x02\xb8\x95\xb8\xb1\x02\x01R\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xdf\x01\n\x04Meta\x12\x36\n\x06labels\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x00R\x06labels\x88\x01\x01\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x1e\n\ngeneration\x18\x04 \x01(\x04R\ngenerationB\t\n\x07_labels\"Y\n\x0cUpdateLabels\x12\x31\n\x06update\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06update\x12\x16\n\x06remove\x18\x02 \x03(\tR\x06remove\"\xaa\x01\n\nUpdateMeta\x12\x39\n\nupdated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x61\n\x10locking_strategy\x18\x02 \x01(\x0e\x32,.metalstack.api.v2.OptimisticLockingStrategyB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0flockingStrategy*\x87\x01\n\nTenantRole\x12\x1b\n\x17TENANT_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11TENANT_ROLE_OWNER\x10\x01\x12\x16\n\x12TENANT_ROLE_EDITOR\x10\x02\x12\x16\n\x12TENANT_ROLE_VIEWER\x10\x03\x12\x15\n\x11TENANT_ROLE_GUEST\x10\x04*u\n\x0bProjectRole\x12\x1c\n\x18PROJECT_ROLE_UNSPECIFIED\x10\x00\x12\x16\n\x12PROJECT_ROLE_OWNER\x10\x01\x12\x17\n\x13PROJECT_ROLE_EDITOR\x10\x02\x12\x17\n\x13PROJECT_ROLE_VIEWER\x10\x03*U\n\tAdminRole\x12\x1a\n\x16\x41\x44MIN_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41\x44MIN_ROLE_EDITOR\x10\x01\x12\x15\n\x11\x41\x44MIN_ROLE_VIEWER\x10\x02*U\n\tInfraRole\x12\x1a\n\x16INFRA_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11INFRA_ROLE_EDITOR\x10\x01\x12\x15\n\x11INFRA_ROLE_VIEWER\x10\x02*]\n\x0bMachineRole\x12\x1c\n\x18MACHINE_ROLE_UNSPECIFIED\x10\x00\x12\x17\n\x13MACHINE_ROLE_EDITOR\x10\x01\x12\x17\n\x13MACHINE_ROLE_VIEWER\x10\x02*T\n\nVisibility\x12\x1a\n\x16VISIBILITY_UNSPECIFIED\x10\x00\x12\x15\n\x11VISIBILITY_PUBLIC\x10\x01\x12\x13\n\x0fVISIBILITY_SELF\x10\x02*R\n\x08\x41uditing\x12\x18\n\x14\x41UDITING_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41UDITING_INCLUDED\x10\x01\x12\x15\n\x11\x41UDITING_EXCLUDED\x10\x02*\x98\x01\n\x19OptimisticLockingStrategy\x12+\n\'OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED\x10\x00\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_CLIENT\x10\x01\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_SERVER\x10\x02:b\n\x0ctenant_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb8\x8e\x03 \x03(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x0btenantRoles:e\n\rproject_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb9\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x0cprojectRoles:_\n\x0b\x61\x64min_roles\x12\x1e.google.protobuf.MethodOptions\x18\xba\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.AdminRoleR\nadminRoles:_\n\nvisibility\x12\x1e.google.protobuf.MethodOptions\x18\xbb\x8e\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.VisibilityR\nvisibility:Y\n\x08\x61uditing\x12\x1e.google.protobuf.MethodOptions\x18\xbc\x8e\x03 \x01(\x0e\x32\x1b.metalstack.api.v2.AuditingR\x08\x61uditing:_\n\x0binfra_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbd\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.InfraRoleR\ninfraRoles:e\n\rmachine_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbe\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x0cmachineRoles:O\n\x11\x65num_string_value\x12!.google.protobuf.EnumValueOptions\x18\xa0\x96\x03 \x01(\tR\x0f\x65numStringValueB\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0b\x43ommonProtoP\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\x1emetalstack/api/v2/common.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a google/protobuf/descriptor.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(metalstack/api/v2/predefined_rules.proto\"O\n\x06Paging\x12\x17\n\x04page\x18\x01 \x01(\x04H\x00R\x04page\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x04H\x01R\x05\x63ount\x88\x01\x01\x42\x07\n\x05_pageB\x08\n\x06_count\"\xa2\x01\n\x06Labels\x12]\n\x06labels\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.Labels.LabelsEntryB\x1e\xbaH\x1b\x9a\x01\x18\"\x07r\x05\x10\x01\x18\x80\x02*\x07r\x05\x10\x00\x18\x80\x02\xb8\x95\xb8\xb1\x02\x01R\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xa3\x02\n\x04Meta\x12\x36\n\x06labels\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x00R\x06labels\x88\x01\x01\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x1e\n\ngeneration\x18\x04 \x01(\x04R\ngeneration\x12-\n\x10\x64\x65letion_task_id\x18\x05 \x01(\tH\x01R\x0e\x64\x65letionTaskId\x88\x01\x01\x42\t\n\x07_labelsB\x13\n\x11_deletion_task_id\"Y\n\x0cUpdateLabels\x12\x31\n\x06update\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06update\x12\x16\n\x06remove\x18\x02 \x03(\tR\x06remove\"\xaa\x01\n\nUpdateMeta\x12\x39\n\nupdated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x61\n\x10locking_strategy\x18\x02 \x01(\x0e\x32,.metalstack.api.v2.OptimisticLockingStrategyB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0flockingStrategy*\x87\x01\n\nTenantRole\x12\x1b\n\x17TENANT_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11TENANT_ROLE_OWNER\x10\x01\x12\x16\n\x12TENANT_ROLE_EDITOR\x10\x02\x12\x16\n\x12TENANT_ROLE_VIEWER\x10\x03\x12\x15\n\x11TENANT_ROLE_GUEST\x10\x04*u\n\x0bProjectRole\x12\x1c\n\x18PROJECT_ROLE_UNSPECIFIED\x10\x00\x12\x16\n\x12PROJECT_ROLE_OWNER\x10\x01\x12\x17\n\x13PROJECT_ROLE_EDITOR\x10\x02\x12\x17\n\x13PROJECT_ROLE_VIEWER\x10\x03*U\n\tAdminRole\x12\x1a\n\x16\x41\x44MIN_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41\x44MIN_ROLE_EDITOR\x10\x01\x12\x15\n\x11\x41\x44MIN_ROLE_VIEWER\x10\x02*U\n\tInfraRole\x12\x1a\n\x16INFRA_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11INFRA_ROLE_EDITOR\x10\x01\x12\x15\n\x11INFRA_ROLE_VIEWER\x10\x02*]\n\x0bMachineRole\x12\x1c\n\x18MACHINE_ROLE_UNSPECIFIED\x10\x00\x12\x17\n\x13MACHINE_ROLE_EDITOR\x10\x01\x12\x17\n\x13MACHINE_ROLE_VIEWER\x10\x02*T\n\nVisibility\x12\x1a\n\x16VISIBILITY_UNSPECIFIED\x10\x00\x12\x15\n\x11VISIBILITY_PUBLIC\x10\x01\x12\x13\n\x0fVISIBILITY_SELF\x10\x02*R\n\x08\x41uditing\x12\x18\n\x14\x41UDITING_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41UDITING_INCLUDED\x10\x01\x12\x15\n\x11\x41UDITING_EXCLUDED\x10\x02*\x98\x01\n\x19OptimisticLockingStrategy\x12+\n\'OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED\x10\x00\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_CLIENT\x10\x01\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_SERVER\x10\x02:b\n\x0ctenant_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb8\x8e\x03 \x03(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x0btenantRoles:e\n\rproject_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb9\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x0cprojectRoles:_\n\x0b\x61\x64min_roles\x12\x1e.google.protobuf.MethodOptions\x18\xba\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.AdminRoleR\nadminRoles:_\n\nvisibility\x12\x1e.google.protobuf.MethodOptions\x18\xbb\x8e\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.VisibilityR\nvisibility:Y\n\x08\x61uditing\x12\x1e.google.protobuf.MethodOptions\x18\xbc\x8e\x03 \x01(\x0e\x32\x1b.metalstack.api.v2.AuditingR\x08\x61uditing:_\n\x0binfra_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbd\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.InfraRoleR\ninfraRoles:e\n\rmachine_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbe\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x0cmachineRoles:O\n\x11\x65num_string_value\x12!.google.protobuf.EnumValueOptions\x18\xa0\x96\x03 \x01(\tR\x0f\x65numStringValueB\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0b\x43ommonProtoP\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)
@@ -42,22 +42,22 @@
_globals['_LABELS'].fields_by_name['labels']._serialized_options = b'\272H\033\232\001\030\"\007r\005\020\001\030\200\002*\007r\005\020\000\030\200\002\270\225\270\261\002\001'
_globals['_UPDATEMETA'].fields_by_name['locking_strategy']._loaded_options = None
_globals['_UPDATEMETA'].fields_by_name['locking_strategy']._serialized_options = b'\272H\005\202\001\002\020\001'
- _globals['_TENANTROLE']._serialized_start=928
- _globals['_TENANTROLE']._serialized_end=1063
- _globals['_PROJECTROLE']._serialized_start=1065
- _globals['_PROJECTROLE']._serialized_end=1182
- _globals['_ADMINROLE']._serialized_start=1184
- _globals['_ADMINROLE']._serialized_end=1269
- _globals['_INFRAROLE']._serialized_start=1271
- _globals['_INFRAROLE']._serialized_end=1356
- _globals['_MACHINEROLE']._serialized_start=1358
- _globals['_MACHINEROLE']._serialized_end=1451
- _globals['_VISIBILITY']._serialized_start=1453
- _globals['_VISIBILITY']._serialized_end=1537
- _globals['_AUDITING']._serialized_start=1539
- _globals['_AUDITING']._serialized_end=1621
- _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_start=1624
- _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_end=1776
+ _globals['_TENANTROLE']._serialized_start=996
+ _globals['_TENANTROLE']._serialized_end=1131
+ _globals['_PROJECTROLE']._serialized_start=1133
+ _globals['_PROJECTROLE']._serialized_end=1250
+ _globals['_ADMINROLE']._serialized_start=1252
+ _globals['_ADMINROLE']._serialized_end=1337
+ _globals['_INFRAROLE']._serialized_start=1339
+ _globals['_INFRAROLE']._serialized_end=1424
+ _globals['_MACHINEROLE']._serialized_start=1426
+ _globals['_MACHINEROLE']._serialized_end=1519
+ _globals['_VISIBILITY']._serialized_start=1521
+ _globals['_VISIBILITY']._serialized_end=1605
+ _globals['_AUDITING']._serialized_start=1607
+ _globals['_AUDITING']._serialized_end=1689
+ _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_start=1692
+ _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_end=1844
_globals['_PAGING']._serialized_start=191
_globals['_PAGING']._serialized_end=270
_globals['_LABELS']._serialized_start=273
@@ -65,9 +65,9 @@
_globals['_LABELS_LABELSENTRY']._serialized_start=378
_globals['_LABELS_LABELSENTRY']._serialized_end=435
_globals['_META']._serialized_start=438
- _globals['_META']._serialized_end=661
- _globals['_UPDATELABELS']._serialized_start=663
- _globals['_UPDATELABELS']._serialized_end=752
- _globals['_UPDATEMETA']._serialized_start=755
- _globals['_UPDATEMETA']._serialized_end=925
+ _globals['_META']._serialized_end=729
+ _globals['_UPDATELABELS']._serialized_start=731
+ _globals['_UPDATELABELS']._serialized_end=820
+ _globals['_UPDATEMETA']._serialized_start=823
+ _globals['_UPDATEMETA']._serialized_end=993
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/common_pb2.pyi b/python/metalstack/api/v2/common_pb2.pyi
index b7856a90..585335eb 100644
--- a/python/metalstack/api/v2/common_pb2.pyi
+++ b/python/metalstack/api/v2/common_pb2.pyi
@@ -129,16 +129,18 @@ class Labels(_message.Message):
def __init__(self, labels: _Optional[_Mapping[str, str]] = ...) -> None: ...
class Meta(_message.Message):
- __slots__ = ("labels", "created_at", "updated_at", "generation")
+ __slots__ = ("labels", "created_at", "updated_at", "generation", "deletion_task_id")
LABELS_FIELD_NUMBER: _ClassVar[int]
CREATED_AT_FIELD_NUMBER: _ClassVar[int]
UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
GENERATION_FIELD_NUMBER: _ClassVar[int]
+ DELETION_TASK_ID_FIELD_NUMBER: _ClassVar[int]
labels: Labels
created_at: _timestamp_pb2.Timestamp
updated_at: _timestamp_pb2.Timestamp
generation: int
- def __init__(self, labels: _Optional[_Union[Labels, _Mapping]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., generation: _Optional[int] = ...) -> None: ...
+ deletion_task_id: str
+ def __init__(self, labels: _Optional[_Union[Labels, _Mapping]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., generation: _Optional[int] = ..., deletion_task_id: _Optional[str] = ...) -> None: ...
class UpdateLabels(_message.Message):
__slots__ = ("update", "remove")
diff --git a/python/metalstack/api/v2/component_pb2.py b/python/metalstack/api/v2/component_pb2.py
index 3c557063..39df6da6 100644
--- a/python/metalstack/api/v2/component_pb2.py
+++ b/python/metalstack/api/v2/component_pb2.py
@@ -31,7 +31,7 @@
from metalstack.api.v2 import version_pb2 as metalstack_dot_api_dot_v2_dot_version__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!metalstack/api/v2/component.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1dmetalstack/api/v2/token.proto\x1a\x1fmetalstack/api/v2/version.proto\"\xab\x03\n\tComponent\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12>\n\x04type\x18\x02 \x01(\x0e\x32 .metalstack.api.v2.ComponentTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12+\n\nidentifier\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\nidentifier\x12\x39\n\nstarted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12;\n\x0breported_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAt\x12\x35\n\x08interval\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08interval\x12\x34\n\x07version\x18\x07 \x01(\x0b\x32\x1a.metalstack.api.v2.VersionR\x07version\x12.\n\x05token\x18\x08 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"\xcb\x01\n\x0e\x43omponentQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x43\n\x04type\x18\x02 \x01(\x0e\x32 .metalstack.api.v2.ComponentTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x04type\x88\x01\x01\x12\x30\n\nidentifier\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x02R\nidentifier\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_typeB\r\n\x0b_identifier*\x8c\x03\n\rComponentType\x12/\n\x1a\x43OMPONENT_TYPE_UNSPECIFIED\x10\x00\x1a\x0f\x82\xb2\x19\x0bunspecified\x12+\n\x18\x43OMPONENT_TYPE_PIXIECORE\x10\x01\x1a\r\x82\xb2\x19\tpixiecore\x12-\n\x19\x43OMPONENT_TYPE_METAL_CORE\x10\x02\x1a\x0e\x82\xb2\x19\nmetal-core\x12+\n\x18\x43OMPONENT_TYPE_METAL_BMC\x10\x03\x1a\r\x82\xb2\x19\tmetal-bmc\x12\x45\n%COMPONENT_TYPE_METAL_IMAGE_CACHE_SYNC\x10\x04\x1a\x1a\x82\xb2\x19\x16metal-image-cache-sync\x12\x33\n\x1c\x43OMPONENT_TYPE_METAL_CONSOLE\x10\x05\x1a\x11\x82\xb2\x19\rmetal-console\x12\x45\n%COMPONENT_TYPE_METAL_METRICS_EXPORTER\x10\x06\x1a\x1a\x82\xb2\x19\x16metal-metrics-exporterB\xc4\x01\n\x15\x63om.metalstack.api.v2B\x0e\x43omponentProtoP\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!metalstack/api/v2/component.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1dmetalstack/api/v2/token.proto\x1a\x1fmetalstack/api/v2/version.proto\"\xd8\x03\n\tComponent\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12>\n\x04type\x18\x02 \x01(\x0e\x32 .metalstack.api.v2.ComponentTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12+\n\nidentifier\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\nidentifier\x12\x39\n\nstarted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12;\n\x0breported_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAt\x12\x35\n\x08interval\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08interval\x12\x34\n\x07version\x18\x07 \x01(\x0b\x32\x1a.metalstack.api.v2.VersionR\x07version\x12.\n\x05token\x18\x08 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12+\n\x04meta\x18\t \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\"\xcb\x01\n\x0e\x43omponentQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x43\n\x04type\x18\x02 \x01(\x0e\x32 .metalstack.api.v2.ComponentTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x04type\x88\x01\x01\x12\x30\n\nidentifier\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x02R\nidentifier\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_typeB\r\n\x0b_identifier*\x8c\x03\n\rComponentType\x12/\n\x1a\x43OMPONENT_TYPE_UNSPECIFIED\x10\x00\x1a\x0f\x82\xb2\x19\x0bunspecified\x12+\n\x18\x43OMPONENT_TYPE_PIXIECORE\x10\x01\x1a\r\x82\xb2\x19\tpixiecore\x12-\n\x19\x43OMPONENT_TYPE_METAL_CORE\x10\x02\x1a\x0e\x82\xb2\x19\nmetal-core\x12+\n\x18\x43OMPONENT_TYPE_METAL_BMC\x10\x03\x1a\r\x82\xb2\x19\tmetal-bmc\x12\x45\n%COMPONENT_TYPE_METAL_IMAGE_CACHE_SYNC\x10\x04\x1a\x1a\x82\xb2\x19\x16metal-image-cache-sync\x12\x33\n\x1c\x43OMPONENT_TYPE_METAL_CONSOLE\x10\x05\x1a\x11\x82\xb2\x19\rmetal-console\x12\x45\n%COMPONENT_TYPE_METAL_METRICS_EXPORTER\x10\x06\x1a\x1a\x82\xb2\x19\x16metal-metrics-exporterB\xc4\x01\n\x15\x63om.metalstack.api.v2B\x0e\x43omponentProtoP\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)
@@ -65,10 +65,10 @@
_globals['_COMPONENTQUERY'].fields_by_name['type']._serialized_options = b'\272H\005\202\001\002\020\001'
_globals['_COMPONENTQUERY'].fields_by_name['identifier']._loaded_options = None
_globals['_COMPONENTQUERY'].fields_by_name['identifier']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_COMPONENTTYPE']._serialized_start=925
- _globals['_COMPONENTTYPE']._serialized_end=1321
+ _globals['_COMPONENTTYPE']._serialized_start=970
+ _globals['_COMPONENTTYPE']._serialized_end=1366
_globals['_COMPONENT']._serialized_start=289
- _globals['_COMPONENT']._serialized_end=716
- _globals['_COMPONENTQUERY']._serialized_start=719
- _globals['_COMPONENTQUERY']._serialized_end=922
+ _globals['_COMPONENT']._serialized_end=761
+ _globals['_COMPONENTQUERY']._serialized_start=764
+ _globals['_COMPONENTQUERY']._serialized_end=967
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/component_pb2.pyi b/python/metalstack/api/v2/component_pb2.pyi
index 2a36b51e..f6a593b5 100644
--- a/python/metalstack/api/v2/component_pb2.pyi
+++ b/python/metalstack/api/v2/component_pb2.pyi
@@ -33,7 +33,7 @@ COMPONENT_TYPE_METAL_CONSOLE: ComponentType
COMPONENT_TYPE_METAL_METRICS_EXPORTER: ComponentType
class Component(_message.Message):
- __slots__ = ("uuid", "type", "identifier", "started_at", "reported_at", "interval", "version", "token")
+ __slots__ = ("uuid", "type", "identifier", "started_at", "reported_at", "interval", "version", "token", "meta")
UUID_FIELD_NUMBER: _ClassVar[int]
TYPE_FIELD_NUMBER: _ClassVar[int]
IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
@@ -42,6 +42,7 @@ class Component(_message.Message):
INTERVAL_FIELD_NUMBER: _ClassVar[int]
VERSION_FIELD_NUMBER: _ClassVar[int]
TOKEN_FIELD_NUMBER: _ClassVar[int]
+ META_FIELD_NUMBER: _ClassVar[int]
uuid: str
type: ComponentType
identifier: str
@@ -50,7 +51,8 @@ class Component(_message.Message):
interval: _duration_pb2.Duration
version: _version_pb2.Version
token: _token_pb2.Token
- def __init__(self, uuid: _Optional[str] = ..., type: _Optional[_Union[ComponentType, str]] = ..., identifier: _Optional[str] = ..., started_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., reported_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., interval: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., version: _Optional[_Union[_version_pb2.Version, _Mapping]] = ..., token: _Optional[_Union[_token_pb2.Token, _Mapping]] = ...) -> None: ...
+ meta: _common_pb2.Meta
+ def __init__(self, uuid: _Optional[str] = ..., type: _Optional[_Union[ComponentType, str]] = ..., identifier: _Optional[str] = ..., started_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., reported_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., interval: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., version: _Optional[_Union[_version_pb2.Version, _Mapping]] = ..., token: _Optional[_Union[_token_pb2.Token, _Mapping]] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ...) -> None: ...
class ComponentQuery(_message.Message):
__slots__ = ("uuid", "type", "identifier")
diff --git a/python/metalstack/api/v2/project_pb2.py b/python/metalstack/api/v2/project_pb2.py
index 713db901..cfcfd6c4 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\"\xe5\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(\tH\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xcb\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\"\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\"\xde\x01\n\x19ProjectServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\xc0\xb3\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\x05\n\x03_idB\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\"\xf6\x01\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(\tH\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\"\xf8\x02\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(\tH\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\"_\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\xe2\x0c\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\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\"\xe5\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(\tH\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\"\xde\x01\n\x19ProjectServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\xc0\xb3\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\x05\n\x03_idB\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\"\xf6\x01\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(\tH\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\"\xf8\x02\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(\tH\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\"_\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\xe2\x0c\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\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)
@@ -111,61 +111,61 @@
_globals['_PROJECT']._serialized_start=191
_globals['_PROJECT']._serialized_end=420
_globals['_PROJECTMEMBER']._serialized_start=423
- _globals['_PROJECTMEMBER']._serialized_end=626
- _globals['_PROJECTINVITE']._serialized_start=629
- _globals['_PROJECTINVITE']._serialized_end=988
- _globals['_PROJECTSERVICELISTREQUEST']._serialized_start=991
- _globals['_PROJECTSERVICELISTREQUEST']._serialized_end=1213
- _globals['_PROJECTSERVICELISTRESPONSE']._serialized_start=1215
- _globals['_PROJECTSERVICELISTRESPONSE']._serialized_end=1299
- _globals['_PROJECTSERVICEGETREQUEST']._serialized_start=1301
- _globals['_PROJECTSERVICEGETREQUEST']._serialized_end=1363
- _globals['_PROJECTSERVICEGETRESPONSE']._serialized_start=1366
- _globals['_PROJECTSERVICEGETRESPONSE']._serialized_end=1522
- _globals['_PROJECTSERVICECREATEREQUEST']._serialized_start=1525
- _globals['_PROJECTSERVICECREATEREQUEST']._serialized_end=1771
- _globals['_PROJECTSERVICECREATERESPONSE']._serialized_start=1773
- _globals['_PROJECTSERVICECREATERESPONSE']._serialized_end=1857
- _globals['_PROJECTSERVICEDELETEREQUEST']._serialized_start=1859
- _globals['_PROJECTSERVICEDELETEREQUEST']._serialized_end=1924
- _globals['_PROJECTSERVICEDELETERESPONSE']._serialized_start=1926
- _globals['_PROJECTSERVICEDELETERESPONSE']._serialized_end=2010
- _globals['_PROJECTSERVICEUPDATEREQUEST']._serialized_start=2013
- _globals['_PROJECTSERVICEUPDATEREQUEST']._serialized_end=2389
- _globals['_PROJECTSERVICEUPDATERESPONSE']._serialized_start=2391
- _globals['_PROJECTSERVICEUPDATERESPONSE']._serialized_end=2475
- _globals['_PROJECTSERVICEINVITEREQUEST']._serialized_start=2477
- _globals['_PROJECTSERVICEINVITEREQUEST']._serialized_end=2604
- _globals['_PROJECTSERVICEINVITERESPONSE']._serialized_start=2606
- _globals['_PROJECTSERVICEINVITERESPONSE']._serialized_end=2694
- _globals['_PROJECTSERVICEINVITESLISTREQUEST']._serialized_start=2696
- _globals['_PROJECTSERVICEINVITESLISTREQUEST']._serialized_end=2766
- _globals['_PROJECTSERVICEINVITESLISTRESPONSE']._serialized_start=2768
- _globals['_PROJECTSERVICEINVITESLISTRESPONSE']._serialized_end=2863
- _globals['_PROJECTSERVICEINVITEGETREQUEST']._serialized_start=2865
- _globals['_PROJECTSERVICEINVITEGETREQUEST']._serialized_end=2921
- _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_start=2923
- _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_end=3014
- _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_start=3016
- _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_end=3080
- _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_start=3082
- _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_end=3111
- _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3113
- _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3208
- _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3210
- _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3246
- _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3249
- _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3406
- _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3408
- _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3517
- _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3519
- _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=3578
- _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3580
- _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3677
- _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=3679
- _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=3774
- _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=3776
- _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=3812
- _globals['_PROJECTSERVICE']._serialized_start=3815
- _globals['_PROJECTSERVICE']._serialized_end=5449
+ _globals['_PROJECTMEMBER']._serialized_end=671
+ _globals['_PROJECTINVITE']._serialized_start=674
+ _globals['_PROJECTINVITE']._serialized_end=1033
+ _globals['_PROJECTSERVICELISTREQUEST']._serialized_start=1036
+ _globals['_PROJECTSERVICELISTREQUEST']._serialized_end=1258
+ _globals['_PROJECTSERVICELISTRESPONSE']._serialized_start=1260
+ _globals['_PROJECTSERVICELISTRESPONSE']._serialized_end=1344
+ _globals['_PROJECTSERVICEGETREQUEST']._serialized_start=1346
+ _globals['_PROJECTSERVICEGETREQUEST']._serialized_end=1408
+ _globals['_PROJECTSERVICEGETRESPONSE']._serialized_start=1411
+ _globals['_PROJECTSERVICEGETRESPONSE']._serialized_end=1567
+ _globals['_PROJECTSERVICECREATEREQUEST']._serialized_start=1570
+ _globals['_PROJECTSERVICECREATEREQUEST']._serialized_end=1816
+ _globals['_PROJECTSERVICECREATERESPONSE']._serialized_start=1818
+ _globals['_PROJECTSERVICECREATERESPONSE']._serialized_end=1902
+ _globals['_PROJECTSERVICEDELETEREQUEST']._serialized_start=1904
+ _globals['_PROJECTSERVICEDELETEREQUEST']._serialized_end=1969
+ _globals['_PROJECTSERVICEDELETERESPONSE']._serialized_start=1971
+ _globals['_PROJECTSERVICEDELETERESPONSE']._serialized_end=2055
+ _globals['_PROJECTSERVICEUPDATEREQUEST']._serialized_start=2058
+ _globals['_PROJECTSERVICEUPDATEREQUEST']._serialized_end=2434
+ _globals['_PROJECTSERVICEUPDATERESPONSE']._serialized_start=2436
+ _globals['_PROJECTSERVICEUPDATERESPONSE']._serialized_end=2520
+ _globals['_PROJECTSERVICEINVITEREQUEST']._serialized_start=2522
+ _globals['_PROJECTSERVICEINVITEREQUEST']._serialized_end=2649
+ _globals['_PROJECTSERVICEINVITERESPONSE']._serialized_start=2651
+ _globals['_PROJECTSERVICEINVITERESPONSE']._serialized_end=2739
+ _globals['_PROJECTSERVICEINVITESLISTREQUEST']._serialized_start=2741
+ _globals['_PROJECTSERVICEINVITESLISTREQUEST']._serialized_end=2811
+ _globals['_PROJECTSERVICEINVITESLISTRESPONSE']._serialized_start=2813
+ _globals['_PROJECTSERVICEINVITESLISTRESPONSE']._serialized_end=2908
+ _globals['_PROJECTSERVICEINVITEGETREQUEST']._serialized_start=2910
+ _globals['_PROJECTSERVICEINVITEGETREQUEST']._serialized_end=2966
+ _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_start=2968
+ _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_end=3059
+ _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_start=3061
+ _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_end=3125
+ _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_start=3127
+ _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_end=3156
+ _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3158
+ _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3253
+ _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3255
+ _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3291
+ _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3294
+ _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3451
+ _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3453
+ _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3562
+ _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3564
+ _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=3623
+ _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3625
+ _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3722
+ _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=3724
+ _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=3819
+ _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=3821
+ _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=3857
+ _globals['_PROJECTSERVICE']._serialized_start=3860
+ _globals['_PROJECTSERVICE']._serialized_end=5494
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/project_pb2.pyi b/python/metalstack/api/v2/project_pb2.pyi
index 4f2f758b..49eff0d4 100644
--- a/python/metalstack/api/v2/project_pb2.pyi
+++ b/python/metalstack/api/v2/project_pb2.pyi
@@ -29,16 +29,18 @@ class Project(_message.Message):
def __init__(self, uuid: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., tenant: _Optional[str] = ..., avatar_url: _Optional[str] = ...) -> None: ...
class ProjectMember(_message.Message):
- __slots__ = ("id", "role", "inherited_membership", "created_at")
+ __slots__ = ("id", "role", "inherited_membership", "created_at", "meta")
ID_FIELD_NUMBER: _ClassVar[int]
ROLE_FIELD_NUMBER: _ClassVar[int]
INHERITED_MEMBERSHIP_FIELD_NUMBER: _ClassVar[int]
CREATED_AT_FIELD_NUMBER: _ClassVar[int]
+ META_FIELD_NUMBER: _ClassVar[int]
id: str
role: _common_pb2.ProjectRole
inherited_membership: bool
created_at: _timestamp_pb2.Timestamp
- def __init__(self, id: _Optional[str] = ..., role: _Optional[_Union[_common_pb2.ProjectRole, str]] = ..., inherited_membership: _Optional[bool] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
+ meta: _common_pb2.Meta
+ def __init__(self, id: _Optional[str] = ..., role: _Optional[_Union[_common_pb2.ProjectRole, str]] = ..., inherited_membership: _Optional[bool] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ...) -> None: ...
class ProjectInvite(_message.Message):
__slots__ = ("secret", "project", "role", "joined", "project_name", "tenant", "tenant_name", "expires_at", "joined_at")
diff --git a/python/metalstack/api/v2/tenant_pb2.py b/python/metalstack/api/v2/tenant_pb2.py
index 38ef83a8..84a52a3e 100644
--- a/python/metalstack/api/v2/tenant_pb2.py
+++ b/python/metalstack/api/v2/tenant_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\x1emetalstack/api/v2/tenant.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\"\xef\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\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\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x07 \x01(\tR\tcreatedBy\"\xb2\x01\n\x0cTenantMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n\x08projects\x18\x03 \x03(\tR\x08projects\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xfb\x02\n\x0cTenantInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n\rtarget_tenant\x18\x02 \x01(\tR\x0ctargetTenant\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12,\n\x12target_tenant_name\x18\x05 \x01(\tR\x10targetTenantName\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\"\xa8\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\x36\n\x06labels\x18\x03 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\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(\tH\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\"\x97\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\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\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x07 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"2\n\x1aTenantServiceDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x01\n\x18TenantServiceGetResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\x12\x46\n\x0etenant_members\x18\x02 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\rtenantMembers\"P\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceUpdateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceDeleteResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"o\n\x1aTenantServiceInviteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"V\n\x1bTenantServiceInviteResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"7\n\x1fTenantServiceInvitesListRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"]\n TenantServiceInvitesListResponse\x12\x39\n\x07invites\x18\x01 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x07invites\"7\n\x1dTenantServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"Y\n\x1eTenantServiceInviteGetResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"P\n TenantServiceRemoveMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"1\n\x19TenantServiceLeaveRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x1c\n\x1aTenantServiceLeaveResponse\"#\n!TenantServiceRemoveMemberResponse\":\n TenantServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n!TenantServiceInviteAcceptResponse\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x02 \x01(\tR\ntenantName\"P\n TenantServiceInviteDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\x8d\x01\n TenantServiceUpdateMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n!TenantServiceUpdateMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\xc7\x0c\n\rTenantService\x12q\n\x06\x43reate\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12k\n\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12l\n\x03Get\x12*.metalstack.api.v2.TenantServiceGetRequest\x1a+.metalstack.api.v2.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12s\n\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n\x06\x44\x65lete\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\x84\x01\n\x0cRemoveMember\x12\x33.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n\x0cUpdateMember\x12\x33.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\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\x0cInviteAccept\x12\x33.metalstack.api.v2.TenantServiceInviteAcceptRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x84\x01\n\x0cInviteDelete\x12\x33.metalstack.api.v2.TenantServiceInviteDeleteRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x81\x01\n\x0bInvitesList\x12\x32.metalstack.api.v2.TenantServiceInvitesListRequest\x1a\x33.metalstack.api.v2.TenantServiceInvitesListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12z\n\tInviteGet\x12\x30.metalstack.api.v2.TenantServiceInviteGetRequest\x1a\x31.metalstack.api.v2.TenantServiceInviteGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x42\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bTenantProtoP\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\x1emetalstack/api/v2/tenant.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\"\xef\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\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\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x07 \x01(\tR\tcreatedBy\"\xdf\x01\n\x0cTenantMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n\x08projects\x18\x03 \x03(\tR\x08projects\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\"\xfb\x02\n\x0cTenantInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n\rtarget_tenant\x18\x02 \x01(\tR\x0ctargetTenant\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12,\n\x12target_tenant_name\x18\x05 \x01(\tR\x10targetTenantName\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\"\xa8\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\x36\n\x06labels\x18\x03 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\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(\tH\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\"\x97\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\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\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x07 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"2\n\x1aTenantServiceDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x01\n\x18TenantServiceGetResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\x12\x46\n\x0etenant_members\x18\x02 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\rtenantMembers\"P\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceUpdateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceDeleteResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"o\n\x1aTenantServiceInviteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"V\n\x1bTenantServiceInviteResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"7\n\x1fTenantServiceInvitesListRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"]\n TenantServiceInvitesListResponse\x12\x39\n\x07invites\x18\x01 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x07invites\"7\n\x1dTenantServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"Y\n\x1eTenantServiceInviteGetResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"P\n TenantServiceRemoveMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"1\n\x19TenantServiceLeaveRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x1c\n\x1aTenantServiceLeaveResponse\"#\n!TenantServiceRemoveMemberResponse\":\n TenantServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n!TenantServiceInviteAcceptResponse\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x02 \x01(\tR\ntenantName\"P\n TenantServiceInviteDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\x8d\x01\n TenantServiceUpdateMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n!TenantServiceUpdateMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\xc7\x0c\n\rTenantService\x12q\n\x06\x43reate\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12k\n\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12l\n\x03Get\x12*.metalstack.api.v2.TenantServiceGetRequest\x1a+.metalstack.api.v2.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12s\n\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n\x06\x44\x65lete\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\x84\x01\n\x0cRemoveMember\x12\x33.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n\x0cUpdateMember\x12\x33.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\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\x0cInviteAccept\x12\x33.metalstack.api.v2.TenantServiceInviteAcceptRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x84\x01\n\x0cInviteDelete\x12\x33.metalstack.api.v2.TenantServiceInviteDeleteRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x81\x01\n\x0bInvitesList\x12\x32.metalstack.api.v2.TenantServiceInvitesListRequest\x1a\x33.metalstack.api.v2.TenantServiceInvitesListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12z\n\tInviteGet\x12\x30.metalstack.api.v2.TenantServiceInviteGetRequest\x1a\x31.metalstack.api.v2.TenantServiceInviteGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x42\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bTenantProtoP\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)
@@ -93,61 +93,61 @@
_globals['_TENANT']._serialized_start=190
_globals['_TENANT']._serialized_end=429
_globals['_TENANTMEMBER']._serialized_start=432
- _globals['_TENANTMEMBER']._serialized_end=610
- _globals['_TENANTINVITE']._serialized_start=613
- _globals['_TENANTINVITE']._serialized_end=992
- _globals['_TENANTSERVICELISTREQUEST']._serialized_start=995
- _globals['_TENANTSERVICELISTREQUEST']._serialized_end=1163
- _globals['_TENANTSERVICEGETREQUEST']._serialized_start=1165
- _globals['_TENANTSERVICEGETREQUEST']._serialized_end=1212
- _globals['_TENANTSERVICECREATEREQUEST']._serialized_start=1215
- _globals['_TENANTSERVICECREATEREQUEST']._serialized_end=1492
- _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_start=1495
- _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_end=1902
- _globals['_TENANTSERVICEDELETEREQUEST']._serialized_start=1904
- _globals['_TENANTSERVICEDELETEREQUEST']._serialized_end=1954
- _globals['_TENANTSERVICEGETRESPONSE']._serialized_start=1957
- _globals['_TENANTSERVICEGETRESPONSE']._serialized_end=2106
- _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=2108
- _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=2188
- _globals['_TENANTSERVICECREATERESPONSE']._serialized_start=2190
- _globals['_TENANTSERVICECREATERESPONSE']._serialized_end=2270
- _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_start=2272
- _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_end=2352
- _globals['_TENANTSERVICEDELETERESPONSE']._serialized_start=2354
- _globals['_TENANTSERVICEDELETERESPONSE']._serialized_end=2434
- _globals['_TENANTSERVICEINVITEREQUEST']._serialized_start=2436
- _globals['_TENANTSERVICEINVITEREQUEST']._serialized_end=2547
- _globals['_TENANTSERVICEINVITERESPONSE']._serialized_start=2549
- _globals['_TENANTSERVICEINVITERESPONSE']._serialized_end=2635
- _globals['_TENANTSERVICEINVITESLISTREQUEST']._serialized_start=2637
- _globals['_TENANTSERVICEINVITESLISTREQUEST']._serialized_end=2692
- _globals['_TENANTSERVICEINVITESLISTRESPONSE']._serialized_start=2694
- _globals['_TENANTSERVICEINVITESLISTRESPONSE']._serialized_end=2787
- _globals['_TENANTSERVICEINVITEGETREQUEST']._serialized_start=2789
- _globals['_TENANTSERVICEINVITEGETREQUEST']._serialized_end=2844
- _globals['_TENANTSERVICEINVITEGETRESPONSE']._serialized_start=2846
- _globals['_TENANTSERVICEINVITEGETRESPONSE']._serialized_end=2935
- _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=2937
- _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3017
- _globals['_TENANTSERVICELEAVEREQUEST']._serialized_start=3019
- _globals['_TENANTSERVICELEAVEREQUEST']._serialized_end=3068
- _globals['_TENANTSERVICELEAVERESPONSE']._serialized_start=3070
- _globals['_TENANTSERVICELEAVERESPONSE']._serialized_end=3098
- _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3100
- _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3135
- _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3137
- _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3195
- _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3197
- _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3289
- _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3291
- _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3371
- _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3373
- _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3408
- _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3411
- _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3552
- _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3554
- _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3659
- _globals['_TENANTSERVICE']._serialized_start=3662
- _globals['_TENANTSERVICE']._serialized_end=5269
+ _globals['_TENANTMEMBER']._serialized_end=655
+ _globals['_TENANTINVITE']._serialized_start=658
+ _globals['_TENANTINVITE']._serialized_end=1037
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_start=1040
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_end=1208
+ _globals['_TENANTSERVICEGETREQUEST']._serialized_start=1210
+ _globals['_TENANTSERVICEGETREQUEST']._serialized_end=1257
+ _globals['_TENANTSERVICECREATEREQUEST']._serialized_start=1260
+ _globals['_TENANTSERVICECREATEREQUEST']._serialized_end=1537
+ _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_start=1540
+ _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_end=1947
+ _globals['_TENANTSERVICEDELETEREQUEST']._serialized_start=1949
+ _globals['_TENANTSERVICEDELETEREQUEST']._serialized_end=1999
+ _globals['_TENANTSERVICEGETRESPONSE']._serialized_start=2002
+ _globals['_TENANTSERVICEGETRESPONSE']._serialized_end=2151
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=2153
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=2233
+ _globals['_TENANTSERVICECREATERESPONSE']._serialized_start=2235
+ _globals['_TENANTSERVICECREATERESPONSE']._serialized_end=2315
+ _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_start=2317
+ _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_end=2397
+ _globals['_TENANTSERVICEDELETERESPONSE']._serialized_start=2399
+ _globals['_TENANTSERVICEDELETERESPONSE']._serialized_end=2479
+ _globals['_TENANTSERVICEINVITEREQUEST']._serialized_start=2481
+ _globals['_TENANTSERVICEINVITEREQUEST']._serialized_end=2592
+ _globals['_TENANTSERVICEINVITERESPONSE']._serialized_start=2594
+ _globals['_TENANTSERVICEINVITERESPONSE']._serialized_end=2680
+ _globals['_TENANTSERVICEINVITESLISTREQUEST']._serialized_start=2682
+ _globals['_TENANTSERVICEINVITESLISTREQUEST']._serialized_end=2737
+ _globals['_TENANTSERVICEINVITESLISTRESPONSE']._serialized_start=2739
+ _globals['_TENANTSERVICEINVITESLISTRESPONSE']._serialized_end=2832
+ _globals['_TENANTSERVICEINVITEGETREQUEST']._serialized_start=2834
+ _globals['_TENANTSERVICEINVITEGETREQUEST']._serialized_end=2889
+ _globals['_TENANTSERVICEINVITEGETRESPONSE']._serialized_start=2891
+ _globals['_TENANTSERVICEINVITEGETRESPONSE']._serialized_end=2980
+ _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=2982
+ _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3062
+ _globals['_TENANTSERVICELEAVEREQUEST']._serialized_start=3064
+ _globals['_TENANTSERVICELEAVEREQUEST']._serialized_end=3113
+ _globals['_TENANTSERVICELEAVERESPONSE']._serialized_start=3115
+ _globals['_TENANTSERVICELEAVERESPONSE']._serialized_end=3143
+ _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3145
+ _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3180
+ _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3182
+ _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3240
+ _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3242
+ _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3334
+ _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3336
+ _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3416
+ _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3418
+ _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3453
+ _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3456
+ _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3597
+ _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3599
+ _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3704
+ _globals['_TENANTSERVICE']._serialized_start=3707
+ _globals['_TENANTSERVICE']._serialized_end=5314
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/tenant_pb2.pyi b/python/metalstack/api/v2/tenant_pb2.pyi
index 190f6252..c677b8c5 100644
--- a/python/metalstack/api/v2/tenant_pb2.pyi
+++ b/python/metalstack/api/v2/tenant_pb2.pyi
@@ -31,16 +31,18 @@ class Tenant(_message.Message):
def __init__(self, login: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., name: _Optional[str] = ..., email: _Optional[str] = ..., description: _Optional[str] = ..., avatar_url: _Optional[str] = ..., created_by: _Optional[str] = ...) -> None: ...
class TenantMember(_message.Message):
- __slots__ = ("id", "role", "projects", "created_at")
+ __slots__ = ("id", "role", "projects", "created_at", "meta")
ID_FIELD_NUMBER: _ClassVar[int]
ROLE_FIELD_NUMBER: _ClassVar[int]
PROJECTS_FIELD_NUMBER: _ClassVar[int]
CREATED_AT_FIELD_NUMBER: _ClassVar[int]
+ META_FIELD_NUMBER: _ClassVar[int]
id: str
role: _common_pb2.TenantRole
projects: _containers.RepeatedScalarFieldContainer[str]
created_at: _timestamp_pb2.Timestamp
- def __init__(self, id: _Optional[str] = ..., role: _Optional[_Union[_common_pb2.TenantRole, str]] = ..., projects: _Optional[_Iterable[str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
+ meta: _common_pb2.Meta
+ def __init__(self, id: _Optional[str] = ..., role: _Optional[_Union[_common_pb2.TenantRole, str]] = ..., projects: _Optional[_Iterable[str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ...) -> None: ...
class TenantInvite(_message.Message):
__slots__ = ("secret", "target_tenant", "role", "joined", "target_tenant_name", "tenant", "tenant_name", "expires_at", "joined_at")