diff --git a/doc/index.html b/doc/index.html index c5b12900..6e7b44fc 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1653,6 +1653,14 @@

Table of Contents

MProjectQuery +
  • + MProjectServiceAddMemberRequest +
  • + +
  • + MProjectServiceAddMemberResponse +
  • +
  • MProjectServiceCreateRequest
  • @@ -2227,6 +2235,14 @@

    Table of Contents

    MTenantQuery +
  • + MTenantServiceAddMemberRequest +
  • + +
  • + MTenantServiceAddMemberResponse +
  • +
  • MTenantServiceCreateRequest
  • @@ -14518,6 +14534,68 @@

    ProjectQuery

    +

    ProjectServiceAddMemberRequest

    +

    ProjectServiceAddMemberRequest is the request payload for adding a member to a project

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    projectstring

    Project is the uuid of the project

    memberstring

    Login of the member to add

    roleProjectRole

    Role to assign to the new member

    + + + + + +

    ProjectServiceAddMemberResponse

    +

    ProjectServiceAddMemberResponse is the response payload for the add member request

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    project_memberProjectRole

    ProjectRole is the added project member

    + + + + +

    ProjectServiceCreateRequest

    ProjectServiceCreateRequest is the request payload to Create a project

    @@ -15262,6 +15340,13 @@

    ProjectService

    Leave project

    + + AddMember + ProjectServiceAddMemberRequest + ProjectServiceAddMemberResponse +

    AddMember adds a user to a project

    + + RemoveMember ProjectServiceRemoveMemberRequest @@ -18715,6 +18800,68 @@

    TenantQuery

    +

    TenantServiceAddMemberRequest

    +

    TenantServiceAddMemberRequest is the request payload for adding a member to a tenant

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    loginstring

    Login of the tenant to which the member will be added

    memberstring

    Login of the member to add

    roleTenantRole

    Role to assign to the new member

    + + + + + +

    TenantServiceAddMemberResponse

    +

    TenantServiceAddMemberResponse is the response payload for the add member request

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    tenant_memberTenantMember

    TenantMember is the added tenant member

    + + + + +

    TenantServiceCreateRequest

    TenantServiceCreateRequest is the request payload of the tenant create request

    @@ -19254,6 +19401,23 @@

    TenantServiceRemove

    TenantServiceRemoveMemberResponse is the response payload to a remove member request

    + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    tenant_memberTenantMember

    TenantMember is the removed tenant member

    + + @@ -19465,6 +19629,13 @@

    TenantService

    Leave removes a member from a tenant

    + + AddMember + TenantServiceAddMemberRequest + TenantServiceAddMemberResponse +

    AddMember adds a member to a tenant

    + + RemoveMember TenantServiceRemoveMemberRequest @@ -19568,6 +19739,23 @@

    TenantServiceAddMemb

    TenantServiceAddMemberResponse is the response payload for the add member request

    + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    tenant_membermetalstack.api.v2.TenantMember

    TenantMember is the added tenant member

    + + @@ -19737,6 +19925,23 @@

    TenantServiceRemo

    TenantServiceRemoveMemberResponse is the response payload for the remove member request

    + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    tenant_membermetalstack.api.v2.TenantMember

    TenantMember is the removed tenant member

    + + diff --git a/go/metalstack/admin/v2/tenant.pb.go b/go/metalstack/admin/v2/tenant.pb.go index 3937e5f2..99979079 100644 --- a/go/metalstack/admin/v2/tenant.pb.go +++ b/go/metalstack/admin/v2/tenant.pb.go @@ -318,7 +318,9 @@ func (x *TenantServiceAddMemberRequest) GetRole() v2.TenantRole { // TenantServiceAddMemberResponse is the response payload for the add member request type TenantServiceAddMemberResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState `protogen:"open.v1"` + // TenantMember is the added tenant member + TenantMember *v2.TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -353,6 +355,13 @@ func (*TenantServiceAddMemberResponse) Descriptor() ([]byte, []int) { return file_metalstack_admin_v2_tenant_proto_rawDescGZIP(), []int{5} } +func (x *TenantServiceAddMemberResponse) GetTenantMember() *v2.TenantMember { + if x != nil { + return x.TenantMember + } + return nil +} + // TenantServiceRemoveMemberRequest is the request payload for removing a member from a tenant type TenantServiceRemoveMemberRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -410,7 +419,9 @@ func (x *TenantServiceRemoveMemberRequest) GetMember() string { // TenantServiceRemoveMemberResponse is the response payload for the remove member request type TenantServiceRemoveMemberResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState `protogen:"open.v1"` + // TenantMember is the removed tenant member + TenantMember *v2.TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -445,6 +456,13 @@ func (*TenantServiceRemoveMemberResponse) Descriptor() ([]byte, []int) { return file_metalstack_admin_v2_tenant_proto_rawDescGZIP(), []int{7} } +func (x *TenantServiceRemoveMemberResponse) GetTenantMember() *v2.TenantMember { + if x != nil { + return x.TenantMember + } + return nil +} + var File_metalstack_admin_v2_tenant_proto protoreflect.FileDescriptor const file_metalstack_admin_v2_tenant_proto_rawDesc = "" + @@ -472,12 +490,14 @@ const file_metalstack_admin_v2_tenant_proto_rawDesc = "" + "\x1dTenantServiceAddMemberRequest\x12#\n" + "\x06tenant\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n" + "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" + - "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\" \n" + - "\x1eTenantServiceAddMemberResponse\"l\n" + + "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n" + + "\x1eTenantServiceAddMemberResponse\x12D\n" + + "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember\"l\n" + " TenantServiceRemoveMemberRequest\x12#\n" + "\x06tenant\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n" + - "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"#\n" + - "!TenantServiceRemoveMemberResponse2\x86\x04\n" + + "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"i\n" + + "!TenantServiceRemoveMemberResponse\x12D\n" + + "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember2\x86\x04\n" + "\rTenantService\x12v\n" + "\x06Create\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a0.metalstack.admin.v2.TenantServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12q\n" + "\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\n" + @@ -512,6 +532,7 @@ var file_metalstack_admin_v2_tenant_proto_goTypes = []any{ (*v2.Tenant)(nil), // 9: metalstack.api.v2.Tenant (*v2.TenantQuery)(nil), // 10: metalstack.api.v2.TenantQuery (v2.TenantRole)(0), // 11: metalstack.api.v2.TenantRole + (*v2.TenantMember)(nil), // 12: metalstack.api.v2.TenantMember } var file_metalstack_admin_v2_tenant_proto_depIdxs = []int32{ 8, // 0: metalstack.admin.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels @@ -519,19 +540,21 @@ var file_metalstack_admin_v2_tenant_proto_depIdxs = []int32{ 10, // 2: metalstack.admin.v2.TenantServiceListRequest.query:type_name -> metalstack.api.v2.TenantQuery 9, // 3: metalstack.admin.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant 11, // 4: metalstack.admin.v2.TenantServiceAddMemberRequest.role:type_name -> metalstack.api.v2.TenantRole - 0, // 5: metalstack.admin.v2.TenantService.Create:input_type -> metalstack.admin.v2.TenantServiceCreateRequest - 2, // 6: metalstack.admin.v2.TenantService.List:input_type -> metalstack.admin.v2.TenantServiceListRequest - 4, // 7: metalstack.admin.v2.TenantService.AddMember:input_type -> metalstack.admin.v2.TenantServiceAddMemberRequest - 6, // 8: metalstack.admin.v2.TenantService.RemoveMember:input_type -> metalstack.admin.v2.TenantServiceRemoveMemberRequest - 1, // 9: metalstack.admin.v2.TenantService.Create:output_type -> metalstack.admin.v2.TenantServiceCreateResponse - 3, // 10: metalstack.admin.v2.TenantService.List:output_type -> metalstack.admin.v2.TenantServiceListResponse - 5, // 11: metalstack.admin.v2.TenantService.AddMember:output_type -> metalstack.admin.v2.TenantServiceAddMemberResponse - 7, // 12: metalstack.admin.v2.TenantService.RemoveMember:output_type -> metalstack.admin.v2.TenantServiceRemoveMemberResponse - 9, // [9:13] is the sub-list for method output_type - 5, // [5:9] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 12, // 5: metalstack.admin.v2.TenantServiceAddMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember + 12, // 6: metalstack.admin.v2.TenantServiceRemoveMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember + 0, // 7: metalstack.admin.v2.TenantService.Create:input_type -> metalstack.admin.v2.TenantServiceCreateRequest + 2, // 8: metalstack.admin.v2.TenantService.List:input_type -> metalstack.admin.v2.TenantServiceListRequest + 4, // 9: metalstack.admin.v2.TenantService.AddMember:input_type -> metalstack.admin.v2.TenantServiceAddMemberRequest + 6, // 10: metalstack.admin.v2.TenantService.RemoveMember:input_type -> metalstack.admin.v2.TenantServiceRemoveMemberRequest + 1, // 11: metalstack.admin.v2.TenantService.Create:output_type -> metalstack.admin.v2.TenantServiceCreateResponse + 3, // 12: metalstack.admin.v2.TenantService.List:output_type -> metalstack.admin.v2.TenantServiceListResponse + 5, // 13: metalstack.admin.v2.TenantService.AddMember:output_type -> metalstack.admin.v2.TenantServiceAddMemberResponse + 7, // 14: metalstack.admin.v2.TenantService.RemoveMember:output_type -> metalstack.admin.v2.TenantServiceRemoveMemberResponse + 11, // [11:15] is the sub-list for method output_type + 7, // [7:11] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_metalstack_admin_v2_tenant_proto_init() } diff --git a/go/metalstack/api/v2/apiv2connect/project.connect.go b/go/metalstack/api/v2/apiv2connect/project.connect.go index 2f18f2f2..c2acdcc6 100644 --- a/go/metalstack/api/v2/apiv2connect/project.connect.go +++ b/go/metalstack/api/v2/apiv2connect/project.connect.go @@ -45,6 +45,9 @@ const ( ProjectServiceUpdateProcedure = "/metalstack.api.v2.ProjectService/Update" // ProjectServiceLeaveProcedure is the fully-qualified name of the ProjectService's Leave RPC. ProjectServiceLeaveProcedure = "/metalstack.api.v2.ProjectService/Leave" + // ProjectServiceAddMemberProcedure is the fully-qualified name of the ProjectService's AddMember + // RPC. + ProjectServiceAddMemberProcedure = "/metalstack.api.v2.ProjectService/AddMember" // ProjectServiceRemoveMemberProcedure is the fully-qualified name of the ProjectService's // RemoveMember RPC. ProjectServiceRemoveMemberProcedure = "/metalstack.api.v2.ProjectService/RemoveMember" @@ -81,6 +84,8 @@ type ProjectServiceClient interface { Update(context.Context, *v2.ProjectServiceUpdateRequest) (*v2.ProjectServiceUpdateResponse, error) // Leave project Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) + // AddMember adds a user to a project + AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) // RemoveMember removes a user from a project RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) // UpdateMember updates a user for a project @@ -144,6 +149,12 @@ func NewProjectServiceClient(httpClient connect.HTTPClient, baseURL string, opts connect.WithSchema(projectServiceMethods.ByName("Leave")), connect.WithClientOptions(opts...), ), + addMember: connect.NewClient[v2.ProjectServiceAddMemberRequest, v2.ProjectServiceAddMemberResponse]( + httpClient, + baseURL+ProjectServiceAddMemberProcedure, + connect.WithSchema(projectServiceMethods.ByName("AddMember")), + connect.WithClientOptions(opts...), + ), removeMember: connect.NewClient[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse]( httpClient, baseURL+ProjectServiceRemoveMemberProcedure, @@ -197,6 +208,7 @@ type projectServiceClient struct { delete *connect.Client[v2.ProjectServiceDeleteRequest, v2.ProjectServiceDeleteResponse] update *connect.Client[v2.ProjectServiceUpdateRequest, v2.ProjectServiceUpdateResponse] leave *connect.Client[v2.ProjectServiceLeaveRequest, v2.ProjectServiceLeaveResponse] + addMember *connect.Client[v2.ProjectServiceAddMemberRequest, v2.ProjectServiceAddMemberResponse] removeMember *connect.Client[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse] updateMember *connect.Client[v2.ProjectServiceUpdateMemberRequest, v2.ProjectServiceUpdateMemberResponse] invite *connect.Client[v2.ProjectServiceInviteRequest, v2.ProjectServiceInviteResponse] @@ -260,6 +272,15 @@ func (c *projectServiceClient) Leave(ctx context.Context, req *v2.ProjectService return nil, err } +// AddMember calls metalstack.api.v2.ProjectService.AddMember. +func (c *projectServiceClient) AddMember(ctx context.Context, req *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) { + response, err := c.addMember.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + // RemoveMember calls metalstack.api.v2.ProjectService.RemoveMember. func (c *projectServiceClient) RemoveMember(ctx context.Context, req *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) { response, err := c.removeMember.CallUnary(ctx, connect.NewRequest(req)) @@ -337,6 +358,8 @@ type ProjectServiceHandler interface { Update(context.Context, *v2.ProjectServiceUpdateRequest) (*v2.ProjectServiceUpdateResponse, error) // Leave project Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) + // AddMember adds a user to a project + AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) // RemoveMember removes a user from a project RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) // UpdateMember updates a user for a project @@ -396,6 +419,12 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler connect.WithSchema(projectServiceMethods.ByName("Leave")), connect.WithHandlerOptions(opts...), ) + projectServiceAddMemberHandler := connect.NewUnaryHandlerSimple( + ProjectServiceAddMemberProcedure, + svc.AddMember, + connect.WithSchema(projectServiceMethods.ByName("AddMember")), + connect.WithHandlerOptions(opts...), + ) projectServiceRemoveMemberHandler := connect.NewUnaryHandlerSimple( ProjectServiceRemoveMemberProcedure, svc.RemoveMember, @@ -452,6 +481,8 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler projectServiceUpdateHandler.ServeHTTP(w, r) case ProjectServiceLeaveProcedure: projectServiceLeaveHandler.ServeHTTP(w, r) + case ProjectServiceAddMemberProcedure: + projectServiceAddMemberHandler.ServeHTTP(w, r) case ProjectServiceRemoveMemberProcedure: projectServiceRemoveMemberHandler.ServeHTTP(w, r) case ProjectServiceUpdateMemberProcedure: @@ -499,6 +530,10 @@ func (UnimplementedProjectServiceHandler) Leave(context.Context, *v2.ProjectServ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.Leave is not implemented")) } +func (UnimplementedProjectServiceHandler) AddMember(context.Context, *v2.ProjectServiceAddMemberRequest) (*v2.ProjectServiceAddMemberResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.AddMember is not implemented")) +} + func (UnimplementedProjectServiceHandler) RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.RemoveMember is not implemented")) } diff --git a/go/metalstack/api/v2/apiv2connect/tenant.connect.go b/go/metalstack/api/v2/apiv2connect/tenant.connect.go index 4291fc44..f1c99c66 100644 --- a/go/metalstack/api/v2/apiv2connect/tenant.connect.go +++ b/go/metalstack/api/v2/apiv2connect/tenant.connect.go @@ -45,6 +45,8 @@ const ( TenantServiceDeleteProcedure = "/metalstack.api.v2.TenantService/Delete" // TenantServiceLeaveProcedure is the fully-qualified name of the TenantService's Leave RPC. TenantServiceLeaveProcedure = "/metalstack.api.v2.TenantService/Leave" + // TenantServiceAddMemberProcedure is the fully-qualified name of the TenantService's AddMember RPC. + TenantServiceAddMemberProcedure = "/metalstack.api.v2.TenantService/AddMember" // TenantServiceRemoveMemberProcedure is the fully-qualified name of the TenantService's // RemoveMember RPC. TenantServiceRemoveMemberProcedure = "/metalstack.api.v2.TenantService/RemoveMember" @@ -80,6 +82,8 @@ type TenantServiceClient interface { Delete(context.Context, *v2.TenantServiceDeleteRequest) (*v2.TenantServiceDeleteResponse, error) // Leave removes a member from a tenant Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) + // AddMember adds a member to a tenant + AddMember(context.Context, *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error) // RemoveMember removes a member from a tenant RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) // UpdateMember update a member of a tenant @@ -143,6 +147,12 @@ func NewTenantServiceClient(httpClient connect.HTTPClient, baseURL string, opts connect.WithSchema(tenantServiceMethods.ByName("Leave")), connect.WithClientOptions(opts...), ), + addMember: connect.NewClient[v2.TenantServiceAddMemberRequest, v2.TenantServiceAddMemberResponse]( + httpClient, + baseURL+TenantServiceAddMemberProcedure, + connect.WithSchema(tenantServiceMethods.ByName("AddMember")), + connect.WithClientOptions(opts...), + ), removeMember: connect.NewClient[v2.TenantServiceRemoveMemberRequest, v2.TenantServiceRemoveMemberResponse]( httpClient, baseURL+TenantServiceRemoveMemberProcedure, @@ -196,6 +206,7 @@ type tenantServiceClient struct { update *connect.Client[v2.TenantServiceUpdateRequest, v2.TenantServiceUpdateResponse] delete *connect.Client[v2.TenantServiceDeleteRequest, v2.TenantServiceDeleteResponse] leave *connect.Client[v2.TenantServiceLeaveRequest, v2.TenantServiceLeaveResponse] + addMember *connect.Client[v2.TenantServiceAddMemberRequest, v2.TenantServiceAddMemberResponse] removeMember *connect.Client[v2.TenantServiceRemoveMemberRequest, v2.TenantServiceRemoveMemberResponse] updateMember *connect.Client[v2.TenantServiceUpdateMemberRequest, v2.TenantServiceUpdateMemberResponse] invite *connect.Client[v2.TenantServiceInviteRequest, v2.TenantServiceInviteResponse] @@ -259,6 +270,15 @@ func (c *tenantServiceClient) Leave(ctx context.Context, req *v2.TenantServiceLe return nil, err } +// AddMember calls metalstack.api.v2.TenantService.AddMember. +func (c *tenantServiceClient) AddMember(ctx context.Context, req *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error) { + response, err := c.addMember.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + // RemoveMember calls metalstack.api.v2.TenantService.RemoveMember. func (c *tenantServiceClient) RemoveMember(ctx context.Context, req *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) { response, err := c.removeMember.CallUnary(ctx, connect.NewRequest(req)) @@ -336,6 +356,8 @@ type TenantServiceHandler interface { Delete(context.Context, *v2.TenantServiceDeleteRequest) (*v2.TenantServiceDeleteResponse, error) // Leave removes a member from a tenant Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) + // AddMember adds a member to a tenant + AddMember(context.Context, *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error) // RemoveMember removes a member from a tenant RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) // UpdateMember update a member of a tenant @@ -395,6 +417,12 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp connect.WithSchema(tenantServiceMethods.ByName("Leave")), connect.WithHandlerOptions(opts...), ) + tenantServiceAddMemberHandler := connect.NewUnaryHandlerSimple( + TenantServiceAddMemberProcedure, + svc.AddMember, + connect.WithSchema(tenantServiceMethods.ByName("AddMember")), + connect.WithHandlerOptions(opts...), + ) tenantServiceRemoveMemberHandler := connect.NewUnaryHandlerSimple( TenantServiceRemoveMemberProcedure, svc.RemoveMember, @@ -451,6 +479,8 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp tenantServiceDeleteHandler.ServeHTTP(w, r) case TenantServiceLeaveProcedure: tenantServiceLeaveHandler.ServeHTTP(w, r) + case TenantServiceAddMemberProcedure: + tenantServiceAddMemberHandler.ServeHTTP(w, r) case TenantServiceRemoveMemberProcedure: tenantServiceRemoveMemberHandler.ServeHTTP(w, r) case TenantServiceUpdateMemberProcedure: @@ -498,6 +528,10 @@ func (UnimplementedTenantServiceHandler) Leave(context.Context, *v2.TenantServic return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.Leave is not implemented")) } +func (UnimplementedTenantServiceHandler) AddMember(context.Context, *v2.TenantServiceAddMemberRequest) (*v2.TenantServiceAddMemberResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.AddMember is not implemented")) +} + func (UnimplementedTenantServiceHandler) RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.RemoveMember is not implemented")) } diff --git a/go/metalstack/api/v2/project.pb.go b/go/metalstack/api/v2/project.pb.go index 2b359b0d..61f3a099 100644 --- a/go/metalstack/api/v2/project.pb.go +++ b/go/metalstack/api/v2/project.pb.go @@ -1311,6 +1311,116 @@ func (*ProjectServiceLeaveResponse) Descriptor() ([]byte, []int) { return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{21} } +// ProjectServiceAddMemberRequest is the request payload for adding a member to a project +type ProjectServiceAddMemberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Project is the uuid of the project + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // Login of the member to add + Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"` + // Role to assign to the new member + Role ProjectRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.ProjectRole" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProjectServiceAddMemberRequest) Reset() { + *x = ProjectServiceAddMemberRequest{} + mi := &file_metalstack_api_v2_project_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProjectServiceAddMemberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectServiceAddMemberRequest) ProtoMessage() {} + +func (x *ProjectServiceAddMemberRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_project_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectServiceAddMemberRequest.ProtoReflect.Descriptor instead. +func (*ProjectServiceAddMemberRequest) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{22} +} + +func (x *ProjectServiceAddMemberRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *ProjectServiceAddMemberRequest) GetMember() string { + if x != nil { + return x.Member + } + return "" +} + +func (x *ProjectServiceAddMemberRequest) GetRole() ProjectRole { + if x != nil { + return x.Role + } + return ProjectRole_PROJECT_ROLE_UNSPECIFIED +} + +// ProjectServiceAddMemberResponse is the response payload for the add member request +type ProjectServiceAddMemberResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // ProjectRole is the added project member + ProjectMember ProjectRole `protobuf:"varint,1,opt,name=project_member,json=projectMember,proto3,enum=metalstack.api.v2.ProjectRole" json:"project_member,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProjectServiceAddMemberResponse) Reset() { + *x = ProjectServiceAddMemberResponse{} + mi := &file_metalstack_api_v2_project_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProjectServiceAddMemberResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectServiceAddMemberResponse) ProtoMessage() {} + +func (x *ProjectServiceAddMemberResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_project_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectServiceAddMemberResponse.ProtoReflect.Descriptor instead. +func (*ProjectServiceAddMemberResponse) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{23} +} + +func (x *ProjectServiceAddMemberResponse) GetProjectMember() ProjectRole { + if x != nil { + return x.ProjectMember + } + return ProjectRole_PROJECT_ROLE_UNSPECIFIED +} + // ProjectServiceRemoveMemberRequest is used to remove a member from a project type ProjectServiceRemoveMemberRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1324,7 +1434,7 @@ type ProjectServiceRemoveMemberRequest struct { func (x *ProjectServiceRemoveMemberRequest) Reset() { *x = ProjectServiceRemoveMemberRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[22] + mi := &file_metalstack_api_v2_project_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1336,7 +1446,7 @@ func (x *ProjectServiceRemoveMemberRequest) String() string { func (*ProjectServiceRemoveMemberRequest) ProtoMessage() {} func (x *ProjectServiceRemoveMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[22] + mi := &file_metalstack_api_v2_project_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1349,7 +1459,7 @@ func (x *ProjectServiceRemoveMemberRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceRemoveMemberRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceRemoveMemberRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{22} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{24} } func (x *ProjectServiceRemoveMemberRequest) GetProject() string { @@ -1375,7 +1485,7 @@ type ProjectServiceRemoveMemberResponse struct { func (x *ProjectServiceRemoveMemberResponse) Reset() { *x = ProjectServiceRemoveMemberResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[23] + mi := &file_metalstack_api_v2_project_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1387,7 +1497,7 @@ func (x *ProjectServiceRemoveMemberResponse) String() string { func (*ProjectServiceRemoveMemberResponse) ProtoMessage() {} func (x *ProjectServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[23] + mi := &file_metalstack_api_v2_project_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1400,7 +1510,7 @@ func (x *ProjectServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceRemoveMemberResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceRemoveMemberResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{23} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{25} } // ProjectServiceUpdateMemberRequest is used to update a member of a project @@ -1418,7 +1528,7 @@ type ProjectServiceUpdateMemberRequest struct { func (x *ProjectServiceUpdateMemberRequest) Reset() { *x = ProjectServiceUpdateMemberRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[24] + mi := &file_metalstack_api_v2_project_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1430,7 +1540,7 @@ func (x *ProjectServiceUpdateMemberRequest) String() string { func (*ProjectServiceUpdateMemberRequest) ProtoMessage() {} func (x *ProjectServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[24] + mi := &file_metalstack_api_v2_project_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1443,7 +1553,7 @@ func (x *ProjectServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceUpdateMemberRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceUpdateMemberRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{24} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{26} } func (x *ProjectServiceUpdateMemberRequest) GetProject() string { @@ -1478,7 +1588,7 @@ type ProjectServiceUpdateMemberResponse struct { func (x *ProjectServiceUpdateMemberResponse) Reset() { *x = ProjectServiceUpdateMemberResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[25] + mi := &file_metalstack_api_v2_project_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1490,7 +1600,7 @@ func (x *ProjectServiceUpdateMemberResponse) String() string { func (*ProjectServiceUpdateMemberResponse) ProtoMessage() {} func (x *ProjectServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[25] + mi := &file_metalstack_api_v2_project_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1503,7 +1613,7 @@ func (x *ProjectServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceUpdateMemberResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceUpdateMemberResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{25} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{27} } func (x *ProjectServiceUpdateMemberResponse) GetProjectMember() *ProjectMember { @@ -1524,7 +1634,7 @@ type ProjectServiceInviteAcceptRequest struct { func (x *ProjectServiceInviteAcceptRequest) Reset() { *x = ProjectServiceInviteAcceptRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[26] + mi := &file_metalstack_api_v2_project_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1536,7 +1646,7 @@ func (x *ProjectServiceInviteAcceptRequest) String() string { func (*ProjectServiceInviteAcceptRequest) ProtoMessage() {} func (x *ProjectServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[26] + mi := &file_metalstack_api_v2_project_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1549,7 +1659,7 @@ func (x *ProjectServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteAcceptRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteAcceptRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{26} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{28} } func (x *ProjectServiceInviteAcceptRequest) GetSecret() string { @@ -1572,7 +1682,7 @@ type ProjectServiceInviteAcceptResponse struct { func (x *ProjectServiceInviteAcceptResponse) Reset() { *x = ProjectServiceInviteAcceptResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[27] + mi := &file_metalstack_api_v2_project_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1584,7 +1694,7 @@ func (x *ProjectServiceInviteAcceptResponse) String() string { func (*ProjectServiceInviteAcceptResponse) ProtoMessage() {} func (x *ProjectServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[27] + mi := &file_metalstack_api_v2_project_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1597,7 +1707,7 @@ func (x *ProjectServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteAcceptResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteAcceptResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{27} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{29} } func (x *ProjectServiceInviteAcceptResponse) GetProject() string { @@ -1627,7 +1737,7 @@ type ProjectServiceInviteDeleteRequest struct { func (x *ProjectServiceInviteDeleteRequest) Reset() { *x = ProjectServiceInviteDeleteRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[28] + mi := &file_metalstack_api_v2_project_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1639,7 +1749,7 @@ func (x *ProjectServiceInviteDeleteRequest) String() string { func (*ProjectServiceInviteDeleteRequest) ProtoMessage() {} func (x *ProjectServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[28] + mi := &file_metalstack_api_v2_project_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1652,7 +1762,7 @@ func (x *ProjectServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteDeleteRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteDeleteRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{28} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{30} } func (x *ProjectServiceInviteDeleteRequest) GetProject() string { @@ -1678,7 +1788,7 @@ type ProjectServiceInviteDeleteResponse struct { func (x *ProjectServiceInviteDeleteResponse) Reset() { *x = ProjectServiceInviteDeleteResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[29] + mi := &file_metalstack_api_v2_project_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1690,7 +1800,7 @@ func (x *ProjectServiceInviteDeleteResponse) String() string { func (*ProjectServiceInviteDeleteResponse) ProtoMessage() {} func (x *ProjectServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[29] + mi := &file_metalstack_api_v2_project_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1703,7 +1813,7 @@ func (x *ProjectServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteDeleteResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteDeleteResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{29} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{31} } var File_metalstack_api_v2_project_proto protoreflect.FileDescriptor @@ -1801,7 +1911,13 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" + "\x06invite\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n" + "\x1aProjectServiceLeaveRequest\x12\"\n" + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\"\x1d\n" + - "\x1bProjectServiceLeaveResponse\"_\n" + + "\x1bProjectServiceLeaveResponse\"\xa7\x01\n" + + "\x1eProjectServiceAddMemberRequest\x12\"\n" + + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12#\n" + + "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n" + + "\x04role\x18\x03 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"h\n" + + "\x1fProjectServiceAddMemberResponse\x12E\n" + + "\x0eproject_member\x18\x01 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleR\rprojectMember\"_\n" + "!ProjectServiceRemoveMemberRequest\x12\"\n" + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" + "\x06member\x18\x02 \x01(\tR\x06member\"$\n" + @@ -1820,7 +1936,7 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" + "!ProjectServiceInviteDeleteRequest\x12\"\n" + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" + "\x06secret\x18\x02 \x01(\tR\x06secret\"$\n" + - "\"ProjectServiceInviteDeleteResponse2\xe2\f\n" + + "\"ProjectServiceInviteDeleteResponse2\xe1\r\n" + "\x0eProjectService\x12m\n" + "\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12m\n" + "\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\v\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n" + @@ -1829,7 +1945,8 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" + "\x06Delete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n" + "\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n" + "\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n" + - "\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x86\x01\n" + + "\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12}\n" + + "\tAddMember\x121.metalstack.api.v2.ProjectServiceAddMemberRequest\x1a2.metalstack.api.v2.ProjectServiceAddMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n" + "\fRemoveMember\x124.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a5.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n" + "\fUpdateMember\x124.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a5.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n" + "\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" + @@ -1851,7 +1968,7 @@ func file_metalstack_api_v2_project_proto_rawDescGZIP() []byte { return file_metalstack_api_v2_project_proto_rawDescData } -var file_metalstack_api_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_metalstack_api_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_metalstack_api_v2_project_proto_goTypes = []any{ (*Project)(nil), // 0: metalstack.api.v2.Project (*ProjectMember)(nil), // 1: metalstack.api.v2.ProjectMember @@ -1875,77 +1992,83 @@ var file_metalstack_api_v2_project_proto_goTypes = []any{ (*ProjectServiceInviteGetResponse)(nil), // 19: metalstack.api.v2.ProjectServiceInviteGetResponse (*ProjectServiceLeaveRequest)(nil), // 20: metalstack.api.v2.ProjectServiceLeaveRequest (*ProjectServiceLeaveResponse)(nil), // 21: metalstack.api.v2.ProjectServiceLeaveResponse - (*ProjectServiceRemoveMemberRequest)(nil), // 22: metalstack.api.v2.ProjectServiceRemoveMemberRequest - (*ProjectServiceRemoveMemberResponse)(nil), // 23: metalstack.api.v2.ProjectServiceRemoveMemberResponse - (*ProjectServiceUpdateMemberRequest)(nil), // 24: metalstack.api.v2.ProjectServiceUpdateMemberRequest - (*ProjectServiceUpdateMemberResponse)(nil), // 25: metalstack.api.v2.ProjectServiceUpdateMemberResponse - (*ProjectServiceInviteAcceptRequest)(nil), // 26: metalstack.api.v2.ProjectServiceInviteAcceptRequest - (*ProjectServiceInviteAcceptResponse)(nil), // 27: metalstack.api.v2.ProjectServiceInviteAcceptResponse - (*ProjectServiceInviteDeleteRequest)(nil), // 28: metalstack.api.v2.ProjectServiceInviteDeleteRequest - (*ProjectServiceInviteDeleteResponse)(nil), // 29: metalstack.api.v2.ProjectServiceInviteDeleteResponse - (*Meta)(nil), // 30: metalstack.api.v2.Meta - (ProjectRole)(0), // 31: metalstack.api.v2.ProjectRole - (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp - (*Labels)(nil), // 33: metalstack.api.v2.Labels - (*UpdateMeta)(nil), // 34: metalstack.api.v2.UpdateMeta - (*UpdateLabels)(nil), // 35: metalstack.api.v2.UpdateLabels + (*ProjectServiceAddMemberRequest)(nil), // 22: metalstack.api.v2.ProjectServiceAddMemberRequest + (*ProjectServiceAddMemberResponse)(nil), // 23: metalstack.api.v2.ProjectServiceAddMemberResponse + (*ProjectServiceRemoveMemberRequest)(nil), // 24: metalstack.api.v2.ProjectServiceRemoveMemberRequest + (*ProjectServiceRemoveMemberResponse)(nil), // 25: metalstack.api.v2.ProjectServiceRemoveMemberResponse + (*ProjectServiceUpdateMemberRequest)(nil), // 26: metalstack.api.v2.ProjectServiceUpdateMemberRequest + (*ProjectServiceUpdateMemberResponse)(nil), // 27: metalstack.api.v2.ProjectServiceUpdateMemberResponse + (*ProjectServiceInviteAcceptRequest)(nil), // 28: metalstack.api.v2.ProjectServiceInviteAcceptRequest + (*ProjectServiceInviteAcceptResponse)(nil), // 29: metalstack.api.v2.ProjectServiceInviteAcceptResponse + (*ProjectServiceInviteDeleteRequest)(nil), // 30: metalstack.api.v2.ProjectServiceInviteDeleteRequest + (*ProjectServiceInviteDeleteResponse)(nil), // 31: metalstack.api.v2.ProjectServiceInviteDeleteResponse + (*Meta)(nil), // 32: metalstack.api.v2.Meta + (ProjectRole)(0), // 33: metalstack.api.v2.ProjectRole + (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp + (*Labels)(nil), // 35: metalstack.api.v2.Labels + (*UpdateMeta)(nil), // 36: metalstack.api.v2.UpdateMeta + (*UpdateLabels)(nil), // 37: metalstack.api.v2.UpdateLabels } var file_metalstack_api_v2_project_proto_depIdxs = []int32{ - 30, // 0: metalstack.api.v2.Project.meta:type_name -> metalstack.api.v2.Meta - 31, // 1: metalstack.api.v2.ProjectMember.role:type_name -> metalstack.api.v2.ProjectRole - 32, // 2: metalstack.api.v2.ProjectMember.created_at:type_name -> google.protobuf.Timestamp - 30, // 3: metalstack.api.v2.ProjectMember.meta:type_name -> metalstack.api.v2.Meta - 31, // 4: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole - 32, // 5: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp - 32, // 6: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp + 32, // 0: metalstack.api.v2.Project.meta:type_name -> metalstack.api.v2.Meta + 33, // 1: metalstack.api.v2.ProjectMember.role:type_name -> metalstack.api.v2.ProjectRole + 34, // 2: metalstack.api.v2.ProjectMember.created_at:type_name -> google.protobuf.Timestamp + 32, // 3: metalstack.api.v2.ProjectMember.meta:type_name -> metalstack.api.v2.Meta + 33, // 4: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole + 34, // 5: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp + 34, // 6: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp 4, // 7: metalstack.api.v2.ProjectServiceListRequest.query:type_name -> metalstack.api.v2.ProjectQuery - 33, // 8: metalstack.api.v2.ProjectQuery.labels:type_name -> metalstack.api.v2.Labels + 35, // 8: metalstack.api.v2.ProjectQuery.labels:type_name -> metalstack.api.v2.Labels 0, // 9: metalstack.api.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project 0, // 10: metalstack.api.v2.ProjectServiceGetResponse.project:type_name -> metalstack.api.v2.Project 1, // 11: metalstack.api.v2.ProjectServiceGetResponse.project_members:type_name -> metalstack.api.v2.ProjectMember - 33, // 12: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels + 35, // 12: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels 0, // 13: metalstack.api.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project 0, // 14: metalstack.api.v2.ProjectServiceDeleteResponse.project:type_name -> metalstack.api.v2.Project - 34, // 15: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta - 35, // 16: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels + 36, // 15: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta + 37, // 16: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels 0, // 17: metalstack.api.v2.ProjectServiceUpdateResponse.project:type_name -> metalstack.api.v2.Project - 31, // 18: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole + 33, // 18: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole 2, // 19: metalstack.api.v2.ProjectServiceInviteResponse.invite:type_name -> metalstack.api.v2.ProjectInvite 2, // 20: metalstack.api.v2.ProjectServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.ProjectInvite 2, // 21: metalstack.api.v2.ProjectServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.ProjectInvite - 31, // 22: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole - 1, // 23: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember - 3, // 24: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest - 6, // 25: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest - 8, // 26: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest - 10, // 27: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest - 12, // 28: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest - 20, // 29: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest - 22, // 30: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest - 24, // 31: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest - 14, // 32: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest - 26, // 33: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest - 28, // 34: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest - 16, // 35: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest - 18, // 36: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest - 5, // 37: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse - 7, // 38: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse - 9, // 39: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse - 11, // 40: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse - 13, // 41: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse - 21, // 42: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse - 23, // 43: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse - 25, // 44: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse - 15, // 45: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse - 27, // 46: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse - 29, // 47: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse - 17, // 48: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse - 19, // 49: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse - 37, // [37:50] is the sub-list for method output_type - 24, // [24:37] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 33, // 22: metalstack.api.v2.ProjectServiceAddMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole + 33, // 23: metalstack.api.v2.ProjectServiceAddMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectRole + 33, // 24: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole + 1, // 25: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember + 3, // 26: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest + 6, // 27: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest + 8, // 28: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest + 10, // 29: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest + 12, // 30: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest + 20, // 31: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest + 22, // 32: metalstack.api.v2.ProjectService.AddMember:input_type -> metalstack.api.v2.ProjectServiceAddMemberRequest + 24, // 33: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest + 26, // 34: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest + 14, // 35: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest + 28, // 36: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest + 30, // 37: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest + 16, // 38: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest + 18, // 39: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest + 5, // 40: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse + 7, // 41: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse + 9, // 42: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse + 11, // 43: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse + 13, // 44: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse + 21, // 45: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse + 23, // 46: metalstack.api.v2.ProjectService.AddMember:output_type -> metalstack.api.v2.ProjectServiceAddMemberResponse + 25, // 47: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse + 27, // 48: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse + 15, // 49: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse + 29, // 50: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse + 31, // 51: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse + 17, // 52: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse + 19, // 53: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse + 40, // [40:54] is the sub-list for method output_type + 26, // [26:40] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_metalstack_api_v2_project_proto_init() } @@ -1965,7 +2088,7 @@ func file_metalstack_api_v2_project_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_project_proto_rawDesc), len(file_metalstack_api_v2_project_proto_rawDesc)), NumEnums: 0, - NumMessages: 30, + NumMessages: 32, NumExtensions: 0, NumServices: 1, }, diff --git a/go/metalstack/api/v2/tenant.pb.go b/go/metalstack/api/v2/tenant.pb.go index de703081..dbbc23d8 100644 --- a/go/metalstack/api/v2/tenant.pb.go +++ b/go/metalstack/api/v2/tenant.pb.go @@ -1382,7 +1382,9 @@ func (*TenantServiceLeaveResponse) Descriptor() ([]byte, []int) { // TenantServiceRemoveMemberResponse is the response payload to a remove member request type TenantServiceRemoveMemberResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState `protogen:"open.v1"` + // TenantMember is the removed tenant member + TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1417,6 +1419,13 @@ func (*TenantServiceRemoveMemberResponse) Descriptor() ([]byte, []int) { return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{23} } +func (x *TenantServiceRemoveMemberResponse) GetTenantMember() *TenantMember { + if x != nil { + return x.TenantMember + } + return nil +} + // TenantServiceInviteAcceptRequest is the request payload to a accept invite request type TenantServiceInviteAcceptRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1610,6 +1619,116 @@ func (*TenantServiceInviteDeleteResponse) Descriptor() ([]byte, []int) { return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{27} } +// TenantServiceAddMemberRequest is the request payload for adding a member to a tenant +type TenantServiceAddMemberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Login of the tenant to which the member will be added + Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"` + // Login of the member to add + Member string `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"` + // Role to assign to the new member + Role TenantRole `protobuf:"varint,3,opt,name=role,proto3,enum=metalstack.api.v2.TenantRole" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantServiceAddMemberRequest) Reset() { + *x = TenantServiceAddMemberRequest{} + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantServiceAddMemberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantServiceAddMemberRequest) ProtoMessage() {} + +func (x *TenantServiceAddMemberRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantServiceAddMemberRequest.ProtoReflect.Descriptor instead. +func (*TenantServiceAddMemberRequest) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{28} +} + +func (x *TenantServiceAddMemberRequest) GetLogin() string { + if x != nil { + return x.Login + } + return "" +} + +func (x *TenantServiceAddMemberRequest) GetMember() string { + if x != nil { + return x.Member + } + return "" +} + +func (x *TenantServiceAddMemberRequest) GetRole() TenantRole { + if x != nil { + return x.Role + } + return TenantRole_TENANT_ROLE_UNSPECIFIED +} + +// TenantServiceAddMemberResponse is the response payload for the add member request +type TenantServiceAddMemberResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // TenantMember is the added tenant member + TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantServiceAddMemberResponse) Reset() { + *x = TenantServiceAddMemberResponse{} + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantServiceAddMemberResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantServiceAddMemberResponse) ProtoMessage() {} + +func (x *TenantServiceAddMemberResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantServiceAddMemberResponse.ProtoReflect.Descriptor instead. +func (*TenantServiceAddMemberResponse) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{29} +} + +func (x *TenantServiceAddMemberResponse) GetTenantMember() *TenantMember { + if x != nil { + return x.TenantMember + } + return nil +} + // TenantServiceUpdateMemberRequest is used to update a member from a tenant type TenantServiceUpdateMemberRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1625,7 +1744,7 @@ type TenantServiceUpdateMemberRequest struct { func (x *TenantServiceUpdateMemberRequest) Reset() { *x = TenantServiceUpdateMemberRequest{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1637,7 +1756,7 @@ func (x *TenantServiceUpdateMemberRequest) String() string { func (*TenantServiceUpdateMemberRequest) ProtoMessage() {} func (x *TenantServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1650,7 +1769,7 @@ func (x *TenantServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceUpdateMemberRequest.ProtoReflect.Descriptor instead. func (*TenantServiceUpdateMemberRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{28} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{30} } func (x *TenantServiceUpdateMemberRequest) GetLogin() string { @@ -1685,7 +1804,7 @@ type TenantServiceUpdateMemberResponse struct { func (x *TenantServiceUpdateMemberResponse) Reset() { *x = TenantServiceUpdateMemberResponse{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[29] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1697,7 +1816,7 @@ func (x *TenantServiceUpdateMemberResponse) String() string { func (*TenantServiceUpdateMemberResponse) ProtoMessage() {} func (x *TenantServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[29] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1710,7 +1829,7 @@ func (x *TenantServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message // Deprecated: Use TenantServiceUpdateMemberResponse.ProtoReflect.Descriptor instead. func (*TenantServiceUpdateMemberResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{29} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{31} } func (x *TenantServiceUpdateMemberResponse) GetTenantMember() *TenantMember { @@ -1822,8 +1941,9 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" + "\x06member\x18\x02 \x01(\tR\x06member\">\n" + "\x19TenantServiceLeaveRequest\x12!\n" + "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\"\x1c\n" + - "\x1aTenantServiceLeaveResponse\"#\n" + - "!TenantServiceRemoveMemberResponse\":\n" + + "\x1aTenantServiceLeaveResponse\"i\n" + + "!TenantServiceRemoveMemberResponse\x12D\n" + + "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember\":\n" + " TenantServiceInviteAcceptRequest\x12\x16\n" + "\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n" + "!TenantServiceInviteAcceptResponse\x12\x16\n" + @@ -1833,13 +1953,19 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" + " TenantServiceInviteDeleteRequest\x12!\n" + "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n" + "\x06secret\x18\x02 \x01(\tR\x06secret\"#\n" + - "!TenantServiceInviteDeleteResponse\"\xa7\x01\n" + + "!TenantServiceInviteDeleteResponse\"\xa4\x01\n" + + "\x1dTenantServiceAddMemberRequest\x12!\n" + + "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n" + + "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" + + "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n" + + "\x1eTenantServiceAddMemberResponse\x12D\n" + + "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember\"\xa7\x01\n" + " TenantServiceUpdateMemberRequest\x12!\n" + "\x05login\x18\x01 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n" + "\x06member\x18\x02 \x01(\tB\v\xbaH\br\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n" + "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n" + "!TenantServiceUpdateMemberResponse\x12D\n" + - "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember2\xc7\f\n" + + "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember2\xc5\r\n" + "\rTenantService\x12q\n" + "\x06Create\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12k\n" + "\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12l\n" + @@ -1848,7 +1974,9 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" + "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n" + "\x06Delete\x12-.metalstack.api.v2.TenantServiceDeleteRequest\x1a..metalstack.api.v2.TenantServiceDeleteResponse\"\n" + "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12o\n" + - "\x05Leave\x12,.metalstack.api.v2.TenantServiceLeaveRequest\x1a-.metalstack.api.v2.TenantServiceLeaveResponse\"\t\xc2\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x84\x01\n" + + "\x05Leave\x12,.metalstack.api.v2.TenantServiceLeaveRequest\x1a-.metalstack.api.v2.TenantServiceLeaveResponse\"\t\xc2\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12|\n" + + "\tAddMember\x120.metalstack.api.v2.TenantServiceAddMemberRequest\x1a1.metalstack.api.v2.TenantServiceAddMemberResponse\"\n" + + "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x84\x01\n" + "\fRemoveMember\x123.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a4.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n" + "\fUpdateMember\x123.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a4.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12r\n" + "\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" + @@ -1870,7 +1998,7 @@ func file_metalstack_api_v2_tenant_proto_rawDescGZIP() []byte { return file_metalstack_api_v2_tenant_proto_rawDescData } -var file_metalstack_api_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_metalstack_api_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_metalstack_api_v2_tenant_proto_goTypes = []any{ (*Tenant)(nil), // 0: metalstack.api.v2.Tenant (*TenantMember)(nil), // 1: metalstack.api.v2.TenantMember @@ -1900,73 +2028,80 @@ var file_metalstack_api_v2_tenant_proto_goTypes = []any{ (*TenantServiceInviteAcceptResponse)(nil), // 25: metalstack.api.v2.TenantServiceInviteAcceptResponse (*TenantServiceInviteDeleteRequest)(nil), // 26: metalstack.api.v2.TenantServiceInviteDeleteRequest (*TenantServiceInviteDeleteResponse)(nil), // 27: metalstack.api.v2.TenantServiceInviteDeleteResponse - (*TenantServiceUpdateMemberRequest)(nil), // 28: metalstack.api.v2.TenantServiceUpdateMemberRequest - (*TenantServiceUpdateMemberResponse)(nil), // 29: metalstack.api.v2.TenantServiceUpdateMemberResponse - (*Meta)(nil), // 30: metalstack.api.v2.Meta - (TenantRole)(0), // 31: metalstack.api.v2.TenantRole - (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp - (*Labels)(nil), // 33: metalstack.api.v2.Labels - (*Paging)(nil), // 34: metalstack.api.v2.Paging - (*UpdateMeta)(nil), // 35: metalstack.api.v2.UpdateMeta - (*UpdateLabels)(nil), // 36: metalstack.api.v2.UpdateLabels + (*TenantServiceAddMemberRequest)(nil), // 28: metalstack.api.v2.TenantServiceAddMemberRequest + (*TenantServiceAddMemberResponse)(nil), // 29: metalstack.api.v2.TenantServiceAddMemberResponse + (*TenantServiceUpdateMemberRequest)(nil), // 30: metalstack.api.v2.TenantServiceUpdateMemberRequest + (*TenantServiceUpdateMemberResponse)(nil), // 31: metalstack.api.v2.TenantServiceUpdateMemberResponse + (*Meta)(nil), // 32: metalstack.api.v2.Meta + (TenantRole)(0), // 33: metalstack.api.v2.TenantRole + (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp + (*Labels)(nil), // 35: metalstack.api.v2.Labels + (*Paging)(nil), // 36: metalstack.api.v2.Paging + (*UpdateMeta)(nil), // 37: metalstack.api.v2.UpdateMeta + (*UpdateLabels)(nil), // 38: metalstack.api.v2.UpdateLabels } var file_metalstack_api_v2_tenant_proto_depIdxs = []int32{ - 30, // 0: metalstack.api.v2.Tenant.meta:type_name -> metalstack.api.v2.Meta - 31, // 1: metalstack.api.v2.TenantMember.role:type_name -> metalstack.api.v2.TenantRole - 32, // 2: metalstack.api.v2.TenantMember.created_at:type_name -> google.protobuf.Timestamp - 30, // 3: metalstack.api.v2.TenantMember.meta:type_name -> metalstack.api.v2.Meta - 31, // 4: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole - 32, // 5: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp - 32, // 6: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp + 32, // 0: metalstack.api.v2.Tenant.meta:type_name -> metalstack.api.v2.Meta + 33, // 1: metalstack.api.v2.TenantMember.role:type_name -> metalstack.api.v2.TenantRole + 34, // 2: metalstack.api.v2.TenantMember.created_at:type_name -> google.protobuf.Timestamp + 32, // 3: metalstack.api.v2.TenantMember.meta:type_name -> metalstack.api.v2.Meta + 33, // 4: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole + 34, // 5: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp + 34, // 6: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp 4, // 7: metalstack.api.v2.TenantServiceListRequest.query:type_name -> metalstack.api.v2.TenantQuery - 33, // 8: metalstack.api.v2.TenantQuery.labels:type_name -> metalstack.api.v2.Labels - 34, // 9: metalstack.api.v2.TenantQuery.paging:type_name -> metalstack.api.v2.Paging - 33, // 10: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels - 35, // 11: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta - 36, // 12: metalstack.api.v2.TenantServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels + 35, // 8: metalstack.api.v2.TenantQuery.labels:type_name -> metalstack.api.v2.Labels + 36, // 9: metalstack.api.v2.TenantQuery.paging:type_name -> metalstack.api.v2.Paging + 35, // 10: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels + 37, // 11: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta + 38, // 12: metalstack.api.v2.TenantServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels 0, // 13: metalstack.api.v2.TenantServiceGetResponse.tenant:type_name -> metalstack.api.v2.Tenant 1, // 14: metalstack.api.v2.TenantServiceGetResponse.tenant_members:type_name -> metalstack.api.v2.TenantMember 0, // 15: metalstack.api.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant 0, // 16: metalstack.api.v2.TenantServiceCreateResponse.tenant:type_name -> metalstack.api.v2.Tenant 0, // 17: metalstack.api.v2.TenantServiceUpdateResponse.tenant:type_name -> metalstack.api.v2.Tenant 0, // 18: metalstack.api.v2.TenantServiceDeleteResponse.tenant:type_name -> metalstack.api.v2.Tenant - 31, // 19: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole + 33, // 19: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole 2, // 20: metalstack.api.v2.TenantServiceInviteResponse.invite:type_name -> metalstack.api.v2.TenantInvite 2, // 21: metalstack.api.v2.TenantServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.TenantInvite 2, // 22: metalstack.api.v2.TenantServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.TenantInvite - 31, // 23: metalstack.api.v2.TenantServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.TenantRole - 1, // 24: metalstack.api.v2.TenantServiceUpdateMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember - 6, // 25: metalstack.api.v2.TenantService.Create:input_type -> metalstack.api.v2.TenantServiceCreateRequest - 3, // 26: metalstack.api.v2.TenantService.List:input_type -> metalstack.api.v2.TenantServiceListRequest - 5, // 27: metalstack.api.v2.TenantService.Get:input_type -> metalstack.api.v2.TenantServiceGetRequest - 7, // 28: metalstack.api.v2.TenantService.Update:input_type -> metalstack.api.v2.TenantServiceUpdateRequest - 8, // 29: metalstack.api.v2.TenantService.Delete:input_type -> metalstack.api.v2.TenantServiceDeleteRequest - 21, // 30: metalstack.api.v2.TenantService.Leave:input_type -> metalstack.api.v2.TenantServiceLeaveRequest - 20, // 31: metalstack.api.v2.TenantService.RemoveMember:input_type -> metalstack.api.v2.TenantServiceRemoveMemberRequest - 28, // 32: metalstack.api.v2.TenantService.UpdateMember:input_type -> metalstack.api.v2.TenantServiceUpdateMemberRequest - 14, // 33: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest - 24, // 34: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest - 26, // 35: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest - 16, // 36: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest - 18, // 37: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest - 11, // 38: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse - 10, // 39: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse - 9, // 40: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse - 12, // 41: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse - 13, // 42: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse - 22, // 43: metalstack.api.v2.TenantService.Leave:output_type -> metalstack.api.v2.TenantServiceLeaveResponse - 23, // 44: metalstack.api.v2.TenantService.RemoveMember:output_type -> metalstack.api.v2.TenantServiceRemoveMemberResponse - 29, // 45: metalstack.api.v2.TenantService.UpdateMember:output_type -> metalstack.api.v2.TenantServiceUpdateMemberResponse - 15, // 46: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse - 25, // 47: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse - 27, // 48: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse - 17, // 49: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse - 19, // 50: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse - 38, // [38:51] is the sub-list for method output_type - 25, // [25:38] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 1, // 23: metalstack.api.v2.TenantServiceRemoveMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember + 33, // 24: metalstack.api.v2.TenantServiceAddMemberRequest.role:type_name -> metalstack.api.v2.TenantRole + 1, // 25: metalstack.api.v2.TenantServiceAddMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember + 33, // 26: metalstack.api.v2.TenantServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.TenantRole + 1, // 27: metalstack.api.v2.TenantServiceUpdateMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember + 6, // 28: metalstack.api.v2.TenantService.Create:input_type -> metalstack.api.v2.TenantServiceCreateRequest + 3, // 29: metalstack.api.v2.TenantService.List:input_type -> metalstack.api.v2.TenantServiceListRequest + 5, // 30: metalstack.api.v2.TenantService.Get:input_type -> metalstack.api.v2.TenantServiceGetRequest + 7, // 31: metalstack.api.v2.TenantService.Update:input_type -> metalstack.api.v2.TenantServiceUpdateRequest + 8, // 32: metalstack.api.v2.TenantService.Delete:input_type -> metalstack.api.v2.TenantServiceDeleteRequest + 21, // 33: metalstack.api.v2.TenantService.Leave:input_type -> metalstack.api.v2.TenantServiceLeaveRequest + 28, // 34: metalstack.api.v2.TenantService.AddMember:input_type -> metalstack.api.v2.TenantServiceAddMemberRequest + 20, // 35: metalstack.api.v2.TenantService.RemoveMember:input_type -> metalstack.api.v2.TenantServiceRemoveMemberRequest + 30, // 36: metalstack.api.v2.TenantService.UpdateMember:input_type -> metalstack.api.v2.TenantServiceUpdateMemberRequest + 14, // 37: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest + 24, // 38: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest + 26, // 39: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest + 16, // 40: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest + 18, // 41: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest + 11, // 42: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse + 10, // 43: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse + 9, // 44: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse + 12, // 45: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse + 13, // 46: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse + 22, // 47: metalstack.api.v2.TenantService.Leave:output_type -> metalstack.api.v2.TenantServiceLeaveResponse + 29, // 48: metalstack.api.v2.TenantService.AddMember:output_type -> metalstack.api.v2.TenantServiceAddMemberResponse + 23, // 49: metalstack.api.v2.TenantService.RemoveMember:output_type -> metalstack.api.v2.TenantServiceRemoveMemberResponse + 31, // 50: metalstack.api.v2.TenantService.UpdateMember:output_type -> metalstack.api.v2.TenantServiceUpdateMemberResponse + 15, // 51: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse + 25, // 52: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse + 27, // 53: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse + 17, // 54: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse + 19, // 55: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse + 42, // [42:56] is the sub-list for method output_type + 28, // [28:42] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_metalstack_api_v2_tenant_proto_init() } @@ -1985,7 +2120,7 @@ func file_metalstack_api_v2_tenant_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_tenant_proto_rawDesc), len(file_metalstack_api_v2_tenant_proto_rawDesc)), NumEnums: 0, - NumMessages: 30, + NumMessages: 32, NumExtensions: 0, NumServices: 1, }, diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go index ce45802f..b81fca5a 100755 --- a/go/permissions/servicepermissions.go +++ b/go/permissions/servicepermissions.go @@ -183,6 +183,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.AuditService/Get": {}, "/metalstack.api.v2.AuditService/List": {}, "/metalstack.api.v2.ProjectService/Create": {}, + "/metalstack.api.v2.TenantService/AddMember": {}, "/metalstack.api.v2.TenantService/Delete": {}, "/metalstack.api.v2.TenantService/Get": {}, "/metalstack.api.v2.TenantService/Invite": {}, @@ -193,10 +194,11 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.TenantService/UpdateMember": {}, }, apiv2.TenantRole_TENANT_ROLE_EDITOR: map[string]struct{}{ - "/metalstack.api.v2.ProjectService/Create": {}, - "/metalstack.api.v2.TenantService/Delete": {}, - "/metalstack.api.v2.TenantService/Get": {}, - "/metalstack.api.v2.TenantService/Update": {}, + "/metalstack.api.v2.ProjectService/Create": {}, + "/metalstack.api.v2.TenantService/AddMember": {}, + "/metalstack.api.v2.TenantService/Delete": {}, + "/metalstack.api.v2.TenantService/Get": {}, + "/metalstack.api.v2.TenantService/Update": {}, }, apiv2.TenantRole_TENANT_ROLE_VIEWER: map[string]struct{}{ "/metalstack.api.v2.TenantService/Get": {}, @@ -226,6 +228,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.NetworkService/List": {}, "/metalstack.api.v2.NetworkService/ListBaseNetworks": {}, "/metalstack.api.v2.NetworkService/Update": {}, + "/metalstack.api.v2.ProjectService/AddMember": {}, "/metalstack.api.v2.ProjectService/Delete": {}, "/metalstack.api.v2.ProjectService/Get": {}, "/metalstack.api.v2.ProjectService/Invite": {}, @@ -374,6 +377,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.NetworkService/Update": {}, "/metalstack.api.v2.PartitionService/Get": {}, "/metalstack.api.v2.PartitionService/List": {}, + "/metalstack.api.v2.ProjectService/AddMember": {}, "/metalstack.api.v2.ProjectService/Create": {}, "/metalstack.api.v2.ProjectService/Delete": {}, "/metalstack.api.v2.ProjectService/Get": {}, @@ -392,6 +396,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.SizeReservationService/List": {}, "/metalstack.api.v2.SizeService/Get": {}, "/metalstack.api.v2.SizeService/List": {}, + "/metalstack.api.v2.TenantService/AddMember": {}, "/metalstack.api.v2.TenantService/Create": {}, "/metalstack.api.v2.TenantService/Delete": {}, "/metalstack.api.v2.TenantService/Get": {}, @@ -552,6 +557,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.AuditService/Get": true, "/metalstack.api.v2.AuditService/List": true, "/metalstack.api.v2.ProjectService/Create": true, + "/metalstack.api.v2.TenantService/AddMember": true, "/metalstack.api.v2.TenantService/Delete": true, "/metalstack.api.v2.TenantService/Get": true, "/metalstack.api.v2.TenantService/Invite": true, @@ -581,6 +587,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.NetworkService/List": true, "/metalstack.api.v2.NetworkService/ListBaseNetworks": true, "/metalstack.api.v2.NetworkService/Update": true, + "/metalstack.api.v2.ProjectService/AddMember": true, "/metalstack.api.v2.ProjectService/Delete": true, "/metalstack.api.v2.ProjectService/Get": true, "/metalstack.api.v2.ProjectService/Invite": true, @@ -690,6 +697,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.NetworkService/Update": true, "/metalstack.api.v2.PartitionService/Get": false, "/metalstack.api.v2.PartitionService/List": false, + "/metalstack.api.v2.ProjectService/AddMember": true, "/metalstack.api.v2.ProjectService/Create": true, "/metalstack.api.v2.ProjectService/Delete": true, "/metalstack.api.v2.ProjectService/Get": false, @@ -708,6 +716,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.SizeReservationService/List": false, "/metalstack.api.v2.SizeService/Get": false, "/metalstack.api.v2.SizeService/List": false, + "/metalstack.api.v2.TenantService/AddMember": true, "/metalstack.api.v2.TenantService/Create": true, "/metalstack.api.v2.TenantService/Delete": true, "/metalstack.api.v2.TenantService/Get": false, diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go index 21883d64..20a990f3 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go @@ -38,6 +38,74 @@ func (_m *ProjectServiceClient) EXPECT() *ProjectServiceClient_Expecter { return &ProjectServiceClient_Expecter{mock: &_m.Mock} } +// AddMember provides a mock function for the type ProjectServiceClient +func (_mock *ProjectServiceClient) AddMember(context1 context.Context, projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest) (*apiv2.ProjectServiceAddMemberResponse, error) { + ret := _mock.Called(context1, projectServiceAddMemberRequest) + + if len(ret) == 0 { + panic("no return value specified for AddMember") + } + + var r0 *apiv2.ProjectServiceAddMemberResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceAddMemberRequest) (*apiv2.ProjectServiceAddMemberResponse, error)); ok { + return returnFunc(context1, projectServiceAddMemberRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceAddMemberRequest) *apiv2.ProjectServiceAddMemberResponse); ok { + r0 = returnFunc(context1, projectServiceAddMemberRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.ProjectServiceAddMemberResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *apiv2.ProjectServiceAddMemberRequest) error); ok { + r1 = returnFunc(context1, projectServiceAddMemberRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// ProjectServiceClient_AddMember_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AddMember' +type ProjectServiceClient_AddMember_Call struct { + *mock.Call +} + +// AddMember is a helper method to define mock.On call +// - context1 context.Context +// - projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest +func (_e *ProjectServiceClient_Expecter) AddMember(context1 any, projectServiceAddMemberRequest any) *ProjectServiceClient_AddMember_Call { + return &ProjectServiceClient_AddMember_Call{Call: _e.mock.On("AddMember", context1, projectServiceAddMemberRequest)} +} + +func (_c *ProjectServiceClient_AddMember_Call) Run(run func(context1 context.Context, projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest)) *ProjectServiceClient_AddMember_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *apiv2.ProjectServiceAddMemberRequest + if args[1] != nil { + arg1 = args[1].(*apiv2.ProjectServiceAddMemberRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *ProjectServiceClient_AddMember_Call) Return(projectServiceAddMemberResponse *apiv2.ProjectServiceAddMemberResponse, err error) *ProjectServiceClient_AddMember_Call { + _c.Call.Return(projectServiceAddMemberResponse, err) + return _c +} + +func (_c *ProjectServiceClient_AddMember_Call) RunAndReturn(run func(context1 context.Context, projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest) (*apiv2.ProjectServiceAddMemberResponse, error)) *ProjectServiceClient_AddMember_Call { + _c.Call.Return(run) + return _c +} + // Create provides a mock function for the type ProjectServiceClient func (_mock *ProjectServiceClient) Create(context1 context.Context, projectServiceCreateRequest *apiv2.ProjectServiceCreateRequest) (*apiv2.ProjectServiceCreateResponse, error) { ret := _mock.Called(context1, projectServiceCreateRequest) diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go index b6e62b39..5fb32b1b 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go @@ -38,6 +38,74 @@ func (_m *ProjectServiceHandler) EXPECT() *ProjectServiceHandler_Expecter { return &ProjectServiceHandler_Expecter{mock: &_m.Mock} } +// AddMember provides a mock function for the type ProjectServiceHandler +func (_mock *ProjectServiceHandler) AddMember(context1 context.Context, projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest) (*apiv2.ProjectServiceAddMemberResponse, error) { + ret := _mock.Called(context1, projectServiceAddMemberRequest) + + if len(ret) == 0 { + panic("no return value specified for AddMember") + } + + var r0 *apiv2.ProjectServiceAddMemberResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceAddMemberRequest) (*apiv2.ProjectServiceAddMemberResponse, error)); ok { + return returnFunc(context1, projectServiceAddMemberRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceAddMemberRequest) *apiv2.ProjectServiceAddMemberResponse); ok { + r0 = returnFunc(context1, projectServiceAddMemberRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.ProjectServiceAddMemberResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *apiv2.ProjectServiceAddMemberRequest) error); ok { + r1 = returnFunc(context1, projectServiceAddMemberRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// ProjectServiceHandler_AddMember_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AddMember' +type ProjectServiceHandler_AddMember_Call struct { + *mock.Call +} + +// AddMember is a helper method to define mock.On call +// - context1 context.Context +// - projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest +func (_e *ProjectServiceHandler_Expecter) AddMember(context1 any, projectServiceAddMemberRequest any) *ProjectServiceHandler_AddMember_Call { + return &ProjectServiceHandler_AddMember_Call{Call: _e.mock.On("AddMember", context1, projectServiceAddMemberRequest)} +} + +func (_c *ProjectServiceHandler_AddMember_Call) Run(run func(context1 context.Context, projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest)) *ProjectServiceHandler_AddMember_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *apiv2.ProjectServiceAddMemberRequest + if args[1] != nil { + arg1 = args[1].(*apiv2.ProjectServiceAddMemberRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *ProjectServiceHandler_AddMember_Call) Return(projectServiceAddMemberResponse *apiv2.ProjectServiceAddMemberResponse, err error) *ProjectServiceHandler_AddMember_Call { + _c.Call.Return(projectServiceAddMemberResponse, err) + return _c +} + +func (_c *ProjectServiceHandler_AddMember_Call) RunAndReturn(run func(context1 context.Context, projectServiceAddMemberRequest *apiv2.ProjectServiceAddMemberRequest) (*apiv2.ProjectServiceAddMemberResponse, error)) *ProjectServiceHandler_AddMember_Call { + _c.Call.Return(run) + return _c +} + // Create provides a mock function for the type ProjectServiceHandler func (_mock *ProjectServiceHandler) Create(context1 context.Context, projectServiceCreateRequest *apiv2.ProjectServiceCreateRequest) (*apiv2.ProjectServiceCreateResponse, error) { ret := _mock.Called(context1, projectServiceCreateRequest) diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go index ccba9089..7c2d8394 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go @@ -38,6 +38,74 @@ func (_m *TenantServiceClient) EXPECT() *TenantServiceClient_Expecter { return &TenantServiceClient_Expecter{mock: &_m.Mock} } +// AddMember provides a mock function for the type TenantServiceClient +func (_mock *TenantServiceClient) AddMember(context1 context.Context, tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest) (*apiv2.TenantServiceAddMemberResponse, error) { + ret := _mock.Called(context1, tenantServiceAddMemberRequest) + + if len(ret) == 0 { + panic("no return value specified for AddMember") + } + + var r0 *apiv2.TenantServiceAddMemberResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceAddMemberRequest) (*apiv2.TenantServiceAddMemberResponse, error)); ok { + return returnFunc(context1, tenantServiceAddMemberRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceAddMemberRequest) *apiv2.TenantServiceAddMemberResponse); ok { + r0 = returnFunc(context1, tenantServiceAddMemberRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.TenantServiceAddMemberResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *apiv2.TenantServiceAddMemberRequest) error); ok { + r1 = returnFunc(context1, tenantServiceAddMemberRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// TenantServiceClient_AddMember_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AddMember' +type TenantServiceClient_AddMember_Call struct { + *mock.Call +} + +// AddMember is a helper method to define mock.On call +// - context1 context.Context +// - tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest +func (_e *TenantServiceClient_Expecter) AddMember(context1 any, tenantServiceAddMemberRequest any) *TenantServiceClient_AddMember_Call { + return &TenantServiceClient_AddMember_Call{Call: _e.mock.On("AddMember", context1, tenantServiceAddMemberRequest)} +} + +func (_c *TenantServiceClient_AddMember_Call) Run(run func(context1 context.Context, tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest)) *TenantServiceClient_AddMember_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *apiv2.TenantServiceAddMemberRequest + if args[1] != nil { + arg1 = args[1].(*apiv2.TenantServiceAddMemberRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *TenantServiceClient_AddMember_Call) Return(tenantServiceAddMemberResponse *apiv2.TenantServiceAddMemberResponse, err error) *TenantServiceClient_AddMember_Call { + _c.Call.Return(tenantServiceAddMemberResponse, err) + return _c +} + +func (_c *TenantServiceClient_AddMember_Call) RunAndReturn(run func(context1 context.Context, tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest) (*apiv2.TenantServiceAddMemberResponse, error)) *TenantServiceClient_AddMember_Call { + _c.Call.Return(run) + return _c +} + // Create provides a mock function for the type TenantServiceClient func (_mock *TenantServiceClient) Create(context1 context.Context, tenantServiceCreateRequest *apiv2.TenantServiceCreateRequest) (*apiv2.TenantServiceCreateResponse, error) { ret := _mock.Called(context1, tenantServiceCreateRequest) diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go index 063d7d53..078c7ff6 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go @@ -38,6 +38,74 @@ func (_m *TenantServiceHandler) EXPECT() *TenantServiceHandler_Expecter { return &TenantServiceHandler_Expecter{mock: &_m.Mock} } +// AddMember provides a mock function for the type TenantServiceHandler +func (_mock *TenantServiceHandler) AddMember(context1 context.Context, tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest) (*apiv2.TenantServiceAddMemberResponse, error) { + ret := _mock.Called(context1, tenantServiceAddMemberRequest) + + if len(ret) == 0 { + panic("no return value specified for AddMember") + } + + var r0 *apiv2.TenantServiceAddMemberResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceAddMemberRequest) (*apiv2.TenantServiceAddMemberResponse, error)); ok { + return returnFunc(context1, tenantServiceAddMemberRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceAddMemberRequest) *apiv2.TenantServiceAddMemberResponse); ok { + r0 = returnFunc(context1, tenantServiceAddMemberRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.TenantServiceAddMemberResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *apiv2.TenantServiceAddMemberRequest) error); ok { + r1 = returnFunc(context1, tenantServiceAddMemberRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// TenantServiceHandler_AddMember_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AddMember' +type TenantServiceHandler_AddMember_Call struct { + *mock.Call +} + +// AddMember is a helper method to define mock.On call +// - context1 context.Context +// - tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest +func (_e *TenantServiceHandler_Expecter) AddMember(context1 any, tenantServiceAddMemberRequest any) *TenantServiceHandler_AddMember_Call { + return &TenantServiceHandler_AddMember_Call{Call: _e.mock.On("AddMember", context1, tenantServiceAddMemberRequest)} +} + +func (_c *TenantServiceHandler_AddMember_Call) Run(run func(context1 context.Context, tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest)) *TenantServiceHandler_AddMember_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *apiv2.TenantServiceAddMemberRequest + if args[1] != nil { + arg1 = args[1].(*apiv2.TenantServiceAddMemberRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *TenantServiceHandler_AddMember_Call) Return(tenantServiceAddMemberResponse *apiv2.TenantServiceAddMemberResponse, err error) *TenantServiceHandler_AddMember_Call { + _c.Call.Return(tenantServiceAddMemberResponse, err) + return _c +} + +func (_c *TenantServiceHandler_AddMember_Call) RunAndReturn(run func(context1 context.Context, tenantServiceAddMemberRequest *apiv2.TenantServiceAddMemberRequest) (*apiv2.TenantServiceAddMemberResponse, error)) *TenantServiceHandler_AddMember_Call { + _c.Call.Return(run) + return _c +} + // Create provides a mock function for the type TenantServiceHandler func (_mock *TenantServiceHandler) Create(context1 context.Context, tenantServiceCreateRequest *apiv2.TenantServiceCreateRequest) (*apiv2.TenantServiceCreateResponse, error) { ret := _mock.Called(context1, tenantServiceCreateRequest) diff --git a/js/metalstack/admin/v2/tenant_pb.d.ts b/js/metalstack/admin/v2/tenant_pb.d.ts index 717356fb..da20c2d6 100644 --- a/js/metalstack/admin/v2/tenant_pb.d.ts +++ b/js/metalstack/admin/v2/tenant_pb.d.ts @@ -1,6 +1,6 @@ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; import type { Labels, TenantRole } from "../../api/v2/common_pb"; -import type { Tenant, TenantQuery } from "../../api/v2/tenant_pb"; +import type { Tenant, TenantMember, TenantQuery } from "../../api/v2/tenant_pb"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file metalstack/admin/v2/tenant.proto. @@ -143,7 +143,14 @@ export declare const TenantServiceAddMemberRequestSchema: GenMessage & {}; +export type TenantServiceAddMemberResponse = Message<"metalstack.admin.v2.TenantServiceAddMemberResponse"> & { + /** + * TenantMember is the added tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; +}; /** * Describes the message metalstack.admin.v2.TenantServiceAddMemberResponse. * Use `create(TenantServiceAddMemberResponseSchema)` to create a new message. @@ -178,7 +185,14 @@ export declare const TenantServiceRemoveMemberRequestSchema: GenMessage & {}; +export type TenantServiceRemoveMemberResponse = Message<"metalstack.admin.v2.TenantServiceRemoveMemberResponse"> & { + /** + * TenantMember is the removed tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; +}; /** * Describes the message metalstack.admin.v2.TenantServiceRemoveMemberResponse. * Use `create(TenantServiceRemoveMemberResponseSchema)` to create a new message. diff --git a/js/metalstack/admin/v2/tenant_pb.js b/js/metalstack/admin/v2/tenant_pb.js index 0f8ad4f0..66917c80 100644 --- a/js/metalstack/admin/v2/tenant_pb.js +++ b/js/metalstack/admin/v2/tenant_pb.js @@ -9,7 +9,7 @@ import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb"; /** * Describes the file metalstack/admin/v2/tenant.proto. */ -export const file_metalstack_admin_v2_tenant = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgaQtK6xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIkgKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Ei0KBXF1ZXJ5GAEgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UXVlcnkibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2UikAEKHVRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiIAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlIlwKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASIjCiFUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UyhgQKDVRlbmFudFNlcnZpY2USdgoGQ3JlYXRlEi8ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBowLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAEScQoETGlzdBItLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgBEn8KCUFkZE1lbWJlchIyLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBEogBCgxSZW1vdmVNZW1iZXISNS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjYubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYAULPAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCC1RlbmFudFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]); +export const file_metalstack_admin_v2_tenant = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgaQtK6xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIkgKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Ei0KBXF1ZXJ5GAEgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UXVlcnkibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2UikAEKHVRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiXAogVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QSGwoGdGVuYW50GAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBIlsKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyMoYECg1UZW5hbnRTZXJ2aWNlEnYKBkNyZWF0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYARJ/CglBZGRNZW1iZXISMi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0GjMubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYARKIAQoMUmVtb3ZlTWVtYmVyEjUubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo2Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAFCzwEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgtUZW5hbnRQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]); /** * Describes the message metalstack.admin.v2.TenantServiceCreateRequest. * Use `create(TenantServiceCreateRequestSchema)` to create a new message. diff --git a/js/metalstack/admin/v2/tenant_pb.ts b/js/metalstack/admin/v2/tenant_pb.ts index 365f1381..edf65a27 100644 --- a/js/metalstack/admin/v2/tenant_pb.ts +++ b/js/metalstack/admin/v2/tenant_pb.ts @@ -8,7 +8,7 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; import type { Labels, TenantRole } from "../../api/v2/common_pb"; import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; -import type { Tenant, TenantQuery } from "../../api/v2/tenant_pb"; +import type { Tenant, TenantMember, TenantQuery } from "../../api/v2/tenant_pb"; import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb"; import type { Message } from "@bufbuild/protobuf"; @@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/admin/v2/tenant.proto. */ export const file_metalstack_admin_v2_tenant: GenFile = /*@__PURE__*/ - fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgaQtK6xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIkgKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Ei0KBXF1ZXJ5GAEgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UXVlcnkibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2UikAEKHVRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiIAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlIlwKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECASIjCiFUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UyhgQKDVRlbmFudFNlcnZpY2USdgoGQ3JlYXRlEi8ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBowLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAEScQoETGlzdBItLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgBEn8KCUFkZE1lbWJlchIyLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUFkZE1lbWJlclJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIJ0vMYAQHg8xgBEogBCgxSZW1vdmVNZW1iZXISNS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjYubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYAULPAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCC1RlbmFudFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]); + fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgaQtK6xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIkgKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Ei0KBXF1ZXJ5GAEgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UXVlcnkibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2UikAEKHVRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIiXAogVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QSGwoGdGVuYW50GAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBIlsKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyMoYECg1UZW5hbnRTZXJ2aWNlEnYKBkNyZWF0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYARJ/CglBZGRNZW1iZXISMi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXF1ZXN0GjMubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYARKIAQoMUmVtb3ZlTWVtYmVyEjUubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo2Lm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnS8xgBAeDzGAFCzwEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgtUZW5hbnRQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]); /** * TenantServiceCreateRequest is the request payload for creating a tenant. @@ -178,6 +178,12 @@ export const TenantServiceAddMemberRequestSchema: GenMessage & { + /** + * TenantMember is the added tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; }; /** @@ -221,6 +227,12 @@ export const TenantServiceRemoveMemberRequestSchema: GenMessage & { + /** + * TenantMember is the removed tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; }; /** diff --git a/js/metalstack/api/v2/project_pb.d.ts b/js/metalstack/api/v2/project_pb.d.ts index 13aa78cd..91656379 100644 --- a/js/metalstack/api/v2/project_pb.d.ts +++ b/js/metalstack/api/v2/project_pb.d.ts @@ -587,6 +587,54 @@ export type ProjectServiceLeaveResponse = Message<"metalstack.api.v2.ProjectServ * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message. */ export declare const ProjectServiceLeaveResponseSchema: GenMessage; +/** + * ProjectServiceAddMemberRequest is the request payload for adding a member to a project + * + * @generated from message metalstack.api.v2.ProjectServiceAddMemberRequest + */ +export type ProjectServiceAddMemberRequest = Message<"metalstack.api.v2.ProjectServiceAddMemberRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Login of the member to add + * + * @generated from field: string member = 2; + */ + member: string; + /** + * Role to assign to the new member + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceAddMemberRequest. + * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message. + */ +export declare const ProjectServiceAddMemberRequestSchema: GenMessage; +/** + * ProjectServiceAddMemberResponse is the response payload for the add member request + * + * @generated from message metalstack.api.v2.ProjectServiceAddMemberResponse + */ +export type ProjectServiceAddMemberResponse = Message<"metalstack.api.v2.ProjectServiceAddMemberResponse"> & { + /** + * ProjectRole is the added project member + * + * @generated from field: metalstack.api.v2.ProjectRole project_member = 1; + */ + projectMember: ProjectRole; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceAddMemberResponse. + * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message. + */ +export declare const ProjectServiceAddMemberResponseSchema: GenMessage; /** * ProjectServiceRemoveMemberRequest is used to remove a member from a project * @@ -813,6 +861,16 @@ export declare const ProjectService: GenService<{ input: typeof ProjectServiceLeaveRequestSchema; output: typeof ProjectServiceLeaveResponseSchema; }; + /** + * AddMember adds a user to a project + * + * @generated from rpc metalstack.api.v2.ProjectService.AddMember + */ + addMember: { + methodKind: "unary"; + input: typeof ProjectServiceAddMemberRequestSchema; + output: typeof ProjectServiceAddMemberResponseSchema; + }; /** * RemoveMember removes a user from a project * diff --git a/js/metalstack/api/v2/project_pb.js b/js/metalstack/api/v2/project_pb.js index 6934df36..5741b914 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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSIkCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIoYBCiFQcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiXgoiUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLiDAoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWQofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg5wcm9qZWN0X21lbWJlchgBIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlIk4KIVByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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. @@ -120,46 +120,56 @@ export const ProjectServiceLeaveRequestSchema = /*@__PURE__*/ messageDesc(file_m * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message. */ export const ProjectServiceLeaveResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 21); +/** + * Describes the message metalstack.api.v2.ProjectServiceAddMemberRequest. + * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message. + */ +export const ProjectServiceAddMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 22); +/** + * Describes the message metalstack.api.v2.ProjectServiceAddMemberResponse. + * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message. + */ +export const ProjectServiceAddMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 23); /** * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberRequest. * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message. */ -export const ProjectServiceRemoveMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 22); +export const ProjectServiceRemoveMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 24); /** * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse. * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message. */ -export const ProjectServiceRemoveMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 23); +export const ProjectServiceRemoveMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 25); /** * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberRequest. * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message. */ -export const ProjectServiceUpdateMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 24); +export const ProjectServiceUpdateMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 26); /** * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberResponse. * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message. */ -export const ProjectServiceUpdateMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 25); +export const ProjectServiceUpdateMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 27); /** * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptRequest. * Use `create(ProjectServiceInviteAcceptRequestSchema)` to create a new message. */ -export const ProjectServiceInviteAcceptRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 26); +export const ProjectServiceInviteAcceptRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 28); /** * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptResponse. * Use `create(ProjectServiceInviteAcceptResponseSchema)` to create a new message. */ -export const ProjectServiceInviteAcceptResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 27); +export const ProjectServiceInviteAcceptResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 29); /** * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteRequest. * Use `create(ProjectServiceInviteDeleteRequestSchema)` to create a new message. */ -export const ProjectServiceInviteDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 28); +export const ProjectServiceInviteDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 30); /** * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteResponse. * Use `create(ProjectServiceInviteDeleteResponseSchema)` to create a new message. */ -export const ProjectServiceInviteDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 29); +export const ProjectServiceInviteDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 31); /** * ProjectService provides project management operations. * diff --git a/js/metalstack/api/v2/project_pb.ts b/js/metalstack/api/v2/project_pb.ts index d6aa4b24..87f4dac5 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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSIkCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIoYBCiFQcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiXgoiUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLiDAoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJxCgVMZWF2ZRItLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnK8xgBA+DzGAEShgEKDFJlbW92ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMVXBkYXRlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEnQKBkludml0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcrzGAEB4PMYARKFAQoMSW52aXRlQWNjZXB0EjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYAuDzGAEShgEKDEludml0ZURlbGV0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARKDAQoLSW52aXRlc0xpc3QSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJyvMYAQHg8xgCEnwKCUludml0ZUdldBIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGALg8xgCQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDFByb2plY3RQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLAAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSJAoKYXZhdGFyX3VybBgGIAEoCUILukgIcgbgs66xAgFIAIgBAUINCgtfYXZhdGFyX3VybCLIAQoNUHJvamVjdE1lbWJlchIKCgJpZBgBIAEoCRI2CgRyb2xlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABEhwKFGluaGVyaXRlZF9tZW1iZXJzaGlwGAMgASgIEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKBG1ldGEYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhIpICCg1Qcm9qZWN0SW52aXRlEg4KBnNlY3JldBgBIAEoCRIPCgdwcm9qZWN0GAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESDgoGam9pbmVkGAQgASgIEhQKDHByb2plY3RfbmFtZRgFIAEoCRIOCgZ0ZW5hbnQYBiABKAkSEwoLdGVuYW50X25hbWUYByABKAkSLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJam9pbmVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJLChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Ei4KBXF1ZXJ5GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFF1ZXJ5IsUBCgxQcm9qZWN0UXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiAKBnRlbmFudBgDIAEoCUILukgIcgaQtK6xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIHCgVfdXVpZEIHCgVfbmFtZUIJCgdfdGVuYW50QgkKB19sYWJlbHMiSgoaUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2USLAoIcHJvamVjdHMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjUKGFByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASKDAQoZUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdBI5Cg9wcm9qZWN0X21lbWJlcnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyItYBChtQcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgAiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0INCgtfYXZhdGFyX3VybCJLChxQcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IjgKG1Byb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJLChxQcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0IsoCChtQcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIkCgphdmF0YXJfdXJsGAUgASgJQgu6SAhyBuCzrrECAUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UikAEKHlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiWQofUHJvamVjdFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZRI2Cg5wcm9qZWN0X21lbWJlchgBIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlIk4KIVByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4Q0KDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEn0KCUFkZE1lbWJlchIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQWRkTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMUmVtb3ZlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEoYBCgxVcGRhdGVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAESdAoGSW52aXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJyvMYAQHg8xgBEoUBCgxJbnZpdGVBY2NlcHQSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKGAQoMSW52aXRlRGVsZXRlEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEoMBCgtJbnZpdGVzTGlzdBIzLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnK8xgBAeDzGAISfAoJSW52aXRlR2V0EjEubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjIubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMUHJvamVjdFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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 @@ -697,6 +697,62 @@ export type ProjectServiceLeaveResponse = Message<"metalstack.api.v2.ProjectServ export const ProjectServiceLeaveResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 21); +/** + * ProjectServiceAddMemberRequest is the request payload for adding a member to a project + * + * @generated from message metalstack.api.v2.ProjectServiceAddMemberRequest + */ +export type ProjectServiceAddMemberRequest = Message<"metalstack.api.v2.ProjectServiceAddMemberRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Login of the member to add + * + * @generated from field: string member = 2; + */ + member: string; + + /** + * Role to assign to the new member + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceAddMemberRequest. + * Use `create(ProjectServiceAddMemberRequestSchema)` to create a new message. + */ +export const ProjectServiceAddMemberRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 22); + +/** + * ProjectServiceAddMemberResponse is the response payload for the add member request + * + * @generated from message metalstack.api.v2.ProjectServiceAddMemberResponse + */ +export type ProjectServiceAddMemberResponse = Message<"metalstack.api.v2.ProjectServiceAddMemberResponse"> & { + /** + * ProjectRole is the added project member + * + * @generated from field: metalstack.api.v2.ProjectRole project_member = 1; + */ + projectMember: ProjectRole; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceAddMemberResponse. + * Use `create(ProjectServiceAddMemberResponseSchema)` to create a new message. + */ +export const ProjectServiceAddMemberResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 23); + /** * ProjectServiceRemoveMemberRequest is used to remove a member from a project * @@ -723,7 +779,7 @@ export type ProjectServiceRemoveMemberRequest = Message<"metalstack.api.v2.Proje * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message. */ export const ProjectServiceRemoveMemberRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 22); + messageDesc(file_metalstack_api_v2_project, 24); /** * ProjectServiceRemoveMemberResponse is the response payload to a remove member request @@ -738,7 +794,7 @@ export type ProjectServiceRemoveMemberResponse = Message<"metalstack.api.v2.Proj * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message. */ export const ProjectServiceRemoveMemberResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 23); + messageDesc(file_metalstack_api_v2_project, 25); /** * ProjectServiceUpdateMemberRequest is used to update a member of a project @@ -773,7 +829,7 @@ export type ProjectServiceUpdateMemberRequest = Message<"metalstack.api.v2.Proje * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message. */ export const ProjectServiceUpdateMemberRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 24); + messageDesc(file_metalstack_api_v2_project, 26); /** * ProjectServiceUpdateMemberResponse is the response payload to a update member request @@ -794,7 +850,7 @@ export type ProjectServiceUpdateMemberResponse = Message<"metalstack.api.v2.Proj * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message. */ export const ProjectServiceUpdateMemberResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 25); + messageDesc(file_metalstack_api_v2_project, 27); /** * ProjectServiceInviteAcceptRequest is the request payload to a accept invite request @@ -815,7 +871,7 @@ export type ProjectServiceInviteAcceptRequest = Message<"metalstack.api.v2.Proje * Use `create(ProjectServiceInviteAcceptRequestSchema)` to create a new message. */ export const ProjectServiceInviteAcceptRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 26); + messageDesc(file_metalstack_api_v2_project, 28); /** * ProjectServiceInviteAcceptResponse is the response payload to a accept invite request @@ -843,7 +899,7 @@ export type ProjectServiceInviteAcceptResponse = Message<"metalstack.api.v2.Proj * Use `create(ProjectServiceInviteAcceptResponseSchema)` to create a new message. */ export const ProjectServiceInviteAcceptResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 27); + messageDesc(file_metalstack_api_v2_project, 29); /** * ProjectServiceInviteDeleteRequest is the request payload to a delete invite @@ -871,7 +927,7 @@ export type ProjectServiceInviteDeleteRequest = Message<"metalstack.api.v2.Proje * Use `create(ProjectServiceInviteDeleteRequestSchema)` to create a new message. */ export const ProjectServiceInviteDeleteRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 28); + messageDesc(file_metalstack_api_v2_project, 30); /** * ProjectServiceInviteDeleteResponse is the response payload of a delete invite request @@ -886,7 +942,7 @@ export type ProjectServiceInviteDeleteResponse = Message<"metalstack.api.v2.Proj * Use `create(ProjectServiceInviteDeleteResponseSchema)` to create a new message. */ export const ProjectServiceInviteDeleteResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_project, 29); + messageDesc(file_metalstack_api_v2_project, 31); /** * ProjectService provides project management operations. @@ -954,6 +1010,16 @@ export const ProjectService: GenService<{ input: typeof ProjectServiceLeaveRequestSchema; output: typeof ProjectServiceLeaveResponseSchema; }, + /** + * AddMember adds a user to a project + * + * @generated from rpc metalstack.api.v2.ProjectService.AddMember + */ + addMember: { + methodKind: "unary"; + input: typeof ProjectServiceAddMemberRequestSchema; + output: typeof ProjectServiceAddMemberResponseSchema; + }, /** * RemoveMember removes a user from a project * diff --git a/js/metalstack/api/v2/tenant_pb.d.ts b/js/metalstack/api/v2/tenant_pb.d.ts index 0cacfd9f..a194604f 100644 --- a/js/metalstack/api/v2/tenant_pb.d.ts +++ b/js/metalstack/api/v2/tenant_pb.d.ts @@ -624,7 +624,14 @@ export declare const TenantServiceLeaveResponseSchema: GenMessage & {}; +export type TenantServiceRemoveMemberResponse = Message<"metalstack.api.v2.TenantServiceRemoveMemberResponse"> & { + /** + * TenantMember is the removed tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; +}; /** * Describes the message metalstack.api.v2.TenantServiceRemoveMemberResponse. * Use `create(TenantServiceRemoveMemberResponseSchema)` to create a new message. @@ -707,6 +714,54 @@ export type TenantServiceInviteDeleteResponse = Message<"metalstack.api.v2.Tenan * Use `create(TenantServiceInviteDeleteResponseSchema)` to create a new message. */ export declare const TenantServiceInviteDeleteResponseSchema: GenMessage; +/** + * TenantServiceAddMemberRequest is the request payload for adding a member to a tenant + * + * @generated from message metalstack.api.v2.TenantServiceAddMemberRequest + */ +export type TenantServiceAddMemberRequest = Message<"metalstack.api.v2.TenantServiceAddMemberRequest"> & { + /** + * Login of the tenant to which the member will be added + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Login of the member to add + * + * @generated from field: string member = 2; + */ + member: string; + /** + * Role to assign to the new member + * + * @generated from field: metalstack.api.v2.TenantRole role = 3; + */ + role: TenantRole; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceAddMemberRequest. + * Use `create(TenantServiceAddMemberRequestSchema)` to create a new message. + */ +export declare const TenantServiceAddMemberRequestSchema: GenMessage; +/** + * TenantServiceAddMemberResponse is the response payload for the add member request + * + * @generated from message metalstack.api.v2.TenantServiceAddMemberResponse + */ +export type TenantServiceAddMemberResponse = Message<"metalstack.api.v2.TenantServiceAddMemberResponse"> & { + /** + * TenantMember is the added tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceAddMemberResponse. + * Use `create(TenantServiceAddMemberResponseSchema)` to create a new message. + */ +export declare const TenantServiceAddMemberResponseSchema: GenMessage; /** * TenantServiceUpdateMemberRequest is used to update a member from a tenant * @@ -821,6 +876,16 @@ export declare const TenantService: GenService<{ input: typeof TenantServiceLeaveRequestSchema; output: typeof TenantServiceLeaveResponseSchema; }; + /** + * AddMember adds a member to a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.AddMember + */ + addMember: { + methodKind: "unary"; + input: typeof TenantServiceAddMemberRequestSchema; + output: typeof TenantServiceAddMemberResponseSchema; + }; /** * RemoveMember removes a member from a tenant * diff --git a/js/metalstack/api/v2/tenant_pb.js b/js/metalstack/api/v2/tenant_pb.js index 2b3b525b..0dd002b9 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("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyItUBCgZUZW5hbnQSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEhYKBWVtYWlsGAQgASgJQge6SARyAmABEiAKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECARIfCgphdmF0YXJfdXJsGAYgASgJQgu6SAhyBuCzrrECARISCgpjcmVhdGVkX2J5GAcgASgJIscBCgxUZW5hbnRNZW1iZXISFwoCaWQYASABKAlCC7pICHIGkLSusQIBEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgRtZXRhGAUgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YSKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5IscBCgtUZW5hbnRRdWVyeRIfCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBEikKBnBhZ2luZxgEIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlBhZ2luZ0IICgZfbG9naW5CBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIvECChpUZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEiQKCmF2YXRhcl91cmwYBiABKAlCC7pICHIG4LOusQIBSAOIAQESNAoGbGFiZWxzGAcgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSASIAQFCBwoFX25hbWVCCAoGX2VtYWlsQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIjgKGlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECASJ+ChhUZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EjcKDnRlbmFudF9tZW1iZXJzGAIgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIkcKGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJvChpUZW5hbnRTZXJ2aWNlSW52aXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiPQofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgEiVAogVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMAoHaW52aXRlcxgBIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSIvCh1UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiUQoeVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlEi8KBmludml0ZRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSJOCiBUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGbWVtYmVyGAIgASgJIjcKGVRlbmFudFNlcnZpY2VMZWF2ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJOCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGc2VjcmV0GAIgASgJIiMKIVRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSKSAQogVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlsKIVRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyMscMCg1UZW5hbnRTZXJ2aWNlEnEKBkNyZWF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJrCgRMaXN0EisubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbAoDR2V0EioubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUdldFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJzCgZVcGRhdGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJzCgZEZWxldGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZSIKwvMYAgEC4PMYARJvCgVMZWF2ZRIsLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGVhdmVSZXNwb25zZSIJwvMYAQPg8xgBEoQBCgxSZW1vdmVNZW1iZXISMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJwvMYAQHg8xgBEoQBCgxVcGRhdGVNZW1iZXISMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlTWVtYmVyUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJwvMYAQHg8xgBEnIKBkludml0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlc3BvbnNlIgnC8xgBAeDzGAESgwEKDEludml0ZUFjY2VwdBIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKEAQoMSW52aXRlRGVsZXRlEjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcLzGAEB4PMYARKBAQoLSW52aXRlc0xpc3QSMi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2UiCcLzGAEB4PMYAhJ6CglJbnZpdGVHZXQSMC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoxLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILVGVuYW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [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("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyItUBCgZUZW5hbnQSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEhYKBWVtYWlsGAQgASgJQge6SARyAmABEiAKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECARIfCgphdmF0YXJfdXJsGAYgASgJQgu6SAhyBuCzrrECARISCgpjcmVhdGVkX2J5GAcgASgJIscBCgxUZW5hbnRNZW1iZXISFwoCaWQYASABKAlCC7pICHIGkLSusQIBEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgRtZXRhGAUgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YSKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5IscBCgtUZW5hbnRRdWVyeRIfCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBEikKBnBhZ2luZxgEIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlBhZ2luZ0IICgZfbG9naW5CBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIvECChpUZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEiQKCmF2YXRhcl91cmwYBiABKAlCC7pICHIG4LOusQIBSAOIAQESNAoGbGFiZWxzGAcgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSASIAQFCBwoFX25hbWVCCAoGX2VtYWlsQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIjgKGlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECASJ+ChhUZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EjcKDnRlbmFudF9tZW1iZXJzGAIgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIkcKGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJvChpUZW5hbnRTZXJ2aWNlSW52aXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiPQofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgEiVAogVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMAoHaW52aXRlcxgBIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSIvCh1UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiUQoeVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlEi8KBmludml0ZRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSJOCiBUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGbWVtYmVyGAIgASgJIjcKGVRlbmFudFNlcnZpY2VMZWF2ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIlsKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIjIKIFRlbmFudFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJICiFUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2USDgoGdGVuYW50GAEgASgJEhMKC3RlbmFudF9uYW1lGAIgASgJIk4KIFRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIo8BCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIikgEKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQASJbCiFUZW5hbnRTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USNgoNdGVuYW50X21lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjLFDQoNVGVuYW50U2VydmljZRJxCgZDcmVhdGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZSII2PMYAuDzGAESawoETGlzdBIrLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEmwKA0dldBIqLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXF1ZXN0GisubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUdldFJlc3BvbnNlIgzC8xgEAQIDBODzGAIScwoGVXBkYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAEScwoGRGVsZXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESbwoFTGVhdmUSLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVzcG9uc2UiCcLzGAED4PMYARJ8CglBZGRNZW1iZXISMC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoxLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIKwvMYAgEC4PMYARKEAQoMUmVtb3ZlTWVtYmVyEjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcLzGAEB4PMYARKEAQoMVXBkYXRlTWVtYmVyEjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2UiCcLzGAEB4PMYARJyCgZJbnZpdGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJwvMYAQHg8xgBEoMBCgxJbnZpdGVBY2NlcHQSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYAuDzGAEShAEKDEludml0ZURlbGV0ZRIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIgnC8xgBAeDzGAESgQEKC0ludml0ZXNMaXN0EjIubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBozLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnC8xgBAeDzGAISegoJSW52aXRlR2V0EjAubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlcXVlc3QaMS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGALg8xgCQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC1RlbmFudFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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. @@ -150,16 +150,26 @@ export const TenantServiceInviteDeleteRequestSchema = /*@__PURE__*/ messageDesc( * Use `create(TenantServiceInviteDeleteResponseSchema)` to create a new message. */ export const TenantServiceInviteDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 27); +/** + * Describes the message metalstack.api.v2.TenantServiceAddMemberRequest. + * Use `create(TenantServiceAddMemberRequestSchema)` to create a new message. + */ +export const TenantServiceAddMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 28); +/** + * Describes the message metalstack.api.v2.TenantServiceAddMemberResponse. + * Use `create(TenantServiceAddMemberResponseSchema)` to create a new message. + */ +export const TenantServiceAddMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 29); /** * Describes the message metalstack.api.v2.TenantServiceUpdateMemberRequest. * Use `create(TenantServiceUpdateMemberRequestSchema)` to create a new message. */ -export const TenantServiceUpdateMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 28); +export const TenantServiceUpdateMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 30); /** * Describes the message metalstack.api.v2.TenantServiceUpdateMemberResponse. * Use `create(TenantServiceUpdateMemberResponseSchema)` to create a new message. */ -export const TenantServiceUpdateMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 29); +export const TenantServiceUpdateMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 31); /** * TenantService provides tenant management operations. * diff --git a/js/metalstack/api/v2/tenant_pb.ts b/js/metalstack/api/v2/tenant_pb.ts index 80bf79e9..db526120 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("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyItUBCgZUZW5hbnQSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEhYKBWVtYWlsGAQgASgJQge6SARyAmABEiAKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECARIfCgphdmF0YXJfdXJsGAYgASgJQgu6SAhyBuCzrrECARISCgpjcmVhdGVkX2J5GAcgASgJIscBCgxUZW5hbnRNZW1iZXISFwoCaWQYASABKAlCC7pICHIGkLSusQIBEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgRtZXRhGAUgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YSKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5IscBCgtUZW5hbnRRdWVyeRIfCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBEikKBnBhZ2luZxgEIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlBhZ2luZ0IICgZfbG9naW5CBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIvECChpUZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEiQKCmF2YXRhcl91cmwYBiABKAlCC7pICHIG4LOusQIBSAOIAQESNAoGbGFiZWxzGAcgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSASIAQFCBwoFX25hbWVCCAoGX2VtYWlsQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIjgKGlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECASJ+ChhUZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EjcKDnRlbmFudF9tZW1iZXJzGAIgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIkcKGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJvChpUZW5hbnRTZXJ2aWNlSW52aXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiPQofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgEiVAogVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMAoHaW52aXRlcxgBIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSIvCh1UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiUQoeVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlEi8KBmludml0ZRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSJOCiBUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGbWVtYmVyGAIgASgJIjcKGVRlbmFudFNlcnZpY2VMZWF2ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJOCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGc2VjcmV0GAIgASgJIiMKIVRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSKSAQogVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBEhsKBm1lbWJlchgCIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgDIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIlsKIVRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyMscMCg1UZW5hbnRTZXJ2aWNlEnEKBkNyZWF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJrCgRMaXN0EisubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISbAoDR2V0EioubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUdldFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJzCgZVcGRhdGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJzCgZEZWxldGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZSIKwvMYAgEC4PMYARJvCgVMZWF2ZRIsLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGVhdmVSZXNwb25zZSIJwvMYAQPg8xgBEoQBCgxSZW1vdmVNZW1iZXISMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIJwvMYAQHg8xgBEoQBCgxVcGRhdGVNZW1iZXISMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlTWVtYmVyUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJwvMYAQHg8xgBEnIKBkludml0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlc3BvbnNlIgnC8xgBAeDzGAESgwEKDEludml0ZUFjY2VwdBIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlIgjY8xgC4PMYARKEAQoMSW52aXRlRGVsZXRlEjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcLzGAEB4PMYARKBAQoLSW52aXRlc0xpc3QSMi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2UiCcLzGAEB4PMYAhJ6CglJbnZpdGVHZXQSMC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoxLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXNwb25zZSII2PMYAuDzGAJCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILVGVuYW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyItUBCgZUZW5hbnQSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEhYKBWVtYWlsGAQgASgJQge6SARyAmABEiAKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECARIfCgphdmF0YXJfdXJsGAYgASgJQgu6SAhyBuCzrrECARISCgpjcmVhdGVkX2J5GAcgASgJIscBCgxUZW5hbnRNZW1iZXISFwoCaWQYASABKAlCC7pICHIGkLSusQIBEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgDIAMoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgRtZXRhGAUgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YSKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkkKGFRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFF1ZXJ5IscBCgtUZW5hbnRRdWVyeRIfCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBEikKBnBhZ2luZxgEIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlBhZ2luZ0IICgZfbG9naW5CBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSL1AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIkCgphdmF0YXJfdXJsGAQgASgJQgu6SAhyBuCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0IOCgxfZGVzY3JpcHRpb25CCAoGX2VtYWlsQg0KC19hdmF0YXJfdXJsIvECChpUZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEiQKCmF2YXRhcl91cmwYBiABKAlCC7pICHIG4LOusQIBSAOIAQESNAoGbGFiZWxzGAcgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSASIAQFCBwoFX25hbWVCCAoGX2VtYWlsQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIjgKGlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECASJ+ChhUZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EjcKDnRlbmFudF9tZW1iZXJzGAIgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIkcKGVRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2USKgoHdGVuYW50cxgBIAMoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJvChpUZW5hbnRTZXJ2aWNlSW52aXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiPQofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgEiVAogVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMAoHaW52aXRlcxgBIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSIvCh1UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiUQoeVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlEi8KBmludml0ZRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudEludml0ZSJOCiBUZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESDgoGbWVtYmVyGAIgASgJIjcKGVRlbmFudFNlcnZpY2VMZWF2ZVJlcXVlc3QSGgoFbG9naW4YASABKAlCC7pICHIGkLSusQIBIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIlsKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZRI2Cg10ZW5hbnRfbWVtYmVyGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50TWVtYmVyIjIKIFRlbmFudFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJICiFUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2USDgoGdGVuYW50GAEgASgJEhMKC3RlbmFudF9uYW1lGAIgASgJIk4KIFRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIo8BCh1UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgaQtK6xAgESGwoGbWVtYmVyGAIgASgJQgu6SAhyBpC0rrECARI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWAoeVGVuYW50U2VydmljZUFkZE1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIikgEKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhoKBWxvZ2luGAEgASgJQgu6SAhyBpC0rrECARIbCgZtZW1iZXIYAiABKAlCC7pICHIGkLSusQIBEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQASJbCiFUZW5hbnRTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USNgoNdGVuYW50X21lbWJlchgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlcjLFDQoNVGVuYW50U2VydmljZRJxCgZDcmVhdGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZSII2PMYAuDzGAESawoETGlzdBIrLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEmwKA0dldBIqLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXF1ZXN0GisubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUdldFJlc3BvbnNlIgzC8xgEAQIDBODzGAIScwoGVXBkYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAEScwoGRGVsZXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESbwoFTGVhdmUSLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVzcG9uc2UiCcLzGAED4PMYARJ8CglBZGRNZW1iZXISMC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQWRkTWVtYmVyUmVxdWVzdBoxLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VBZGRNZW1iZXJSZXNwb25zZSIKwvMYAgEC4PMYARKEAQoMUmVtb3ZlTWVtYmVyEjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcLzGAEB4PMYARKEAQoMVXBkYXRlTWVtYmVyEjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2UiCcLzGAEB4PMYARJyCgZJbnZpdGUSLS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZSIJwvMYAQHg8xgBEoMBCgxJbnZpdGVBY2NlcHQSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYAuDzGAEShAEKDEludml0ZURlbGV0ZRIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIgnC8xgBAeDzGAESgQEKC0ludml0ZXNMaXN0EjIubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBozLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlc3BvbnNlIgnC8xgBAeDzGAISegoJSW52aXRlR2V0EjAubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlcXVlc3QaMS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGALg8xgCQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC1RlbmFudFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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 @@ -741,6 +741,12 @@ export const TenantServiceLeaveResponseSchema: GenMessage & { + /** + * TenantMember is the removed tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; }; /** @@ -842,6 +848,62 @@ export type TenantServiceInviteDeleteResponse = Message<"metalstack.api.v2.Tenan export const TenantServiceInviteDeleteResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 27); +/** + * TenantServiceAddMemberRequest is the request payload for adding a member to a tenant + * + * @generated from message metalstack.api.v2.TenantServiceAddMemberRequest + */ +export type TenantServiceAddMemberRequest = Message<"metalstack.api.v2.TenantServiceAddMemberRequest"> & { + /** + * Login of the tenant to which the member will be added + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Login of the member to add + * + * @generated from field: string member = 2; + */ + member: string; + + /** + * Role to assign to the new member + * + * @generated from field: metalstack.api.v2.TenantRole role = 3; + */ + role: TenantRole; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceAddMemberRequest. + * Use `create(TenantServiceAddMemberRequestSchema)` to create a new message. + */ +export const TenantServiceAddMemberRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 28); + +/** + * TenantServiceAddMemberResponse is the response payload for the add member request + * + * @generated from message metalstack.api.v2.TenantServiceAddMemberResponse + */ +export type TenantServiceAddMemberResponse = Message<"metalstack.api.v2.TenantServiceAddMemberResponse"> & { + /** + * TenantMember is the added tenant member + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember | undefined; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceAddMemberResponse. + * Use `create(TenantServiceAddMemberResponseSchema)` to create a new message. + */ +export const TenantServiceAddMemberResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 29); + /** * TenantServiceUpdateMemberRequest is used to update a member from a tenant * @@ -875,7 +937,7 @@ export type TenantServiceUpdateMemberRequest = Message<"metalstack.api.v2.Tenant * Use `create(TenantServiceUpdateMemberRequestSchema)` to create a new message. */ export const TenantServiceUpdateMemberRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_tenant, 28); + messageDesc(file_metalstack_api_v2_tenant, 30); /** * TenantServiceUpdateMemberResponse is the response payload to a update member request @@ -896,7 +958,7 @@ export type TenantServiceUpdateMemberResponse = Message<"metalstack.api.v2.Tenan * Use `create(TenantServiceUpdateMemberResponseSchema)` to create a new message. */ export const TenantServiceUpdateMemberResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_tenant, 29); + messageDesc(file_metalstack_api_v2_tenant, 31); /** * TenantService provides tenant management operations. @@ -964,6 +1026,16 @@ export const TenantService: GenService<{ input: typeof TenantServiceLeaveRequestSchema; output: typeof TenantServiceLeaveResponseSchema; }, + /** + * AddMember adds a member to a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.AddMember + */ + addMember: { + methodKind: "unary"; + input: typeof TenantServiceAddMemberRequestSchema; + output: typeof TenantServiceAddMemberResponseSchema; + }, /** * RemoveMember removes a member from a tenant * diff --git a/proto/metalstack/admin/v2/tenant.proto b/proto/metalstack/admin/v2/tenant.proto index ccb65a61..2716e65f 100644 --- a/proto/metalstack/admin/v2/tenant.proto +++ b/proto/metalstack/admin/v2/tenant.proto @@ -77,7 +77,10 @@ message TenantServiceAddMemberRequest { } // TenantServiceAddMemberResponse is the response payload for the add member request -message TenantServiceAddMemberResponse {} +message TenantServiceAddMemberResponse { + // TenantMember is the added tenant member + metalstack.api.v2.TenantMember tenant_member = 1; +} // TenantServiceRemoveMemberRequest is the request payload for removing a member from a tenant message TenantServiceRemoveMemberRequest { @@ -88,4 +91,7 @@ message TenantServiceRemoveMemberRequest { } // TenantServiceRemoveMemberResponse is the response payload for the remove member request -message TenantServiceRemoveMemberResponse {} +message TenantServiceRemoveMemberResponse { + // TenantMember is the removed tenant member + metalstack.api.v2.TenantMember tenant_member = 1; +} diff --git a/proto/metalstack/api/v2/project.proto b/proto/metalstack/api/v2/project.proto index cfb49f0b..cff27a64 100644 --- a/proto/metalstack/api/v2/project.proto +++ b/proto/metalstack/api/v2/project.proto @@ -43,6 +43,12 @@ service ProjectService { option (project_roles) = PROJECT_ROLE_VIEWER; option (auditing) = AUDITING_INCLUDED; } + + // AddMember adds a user to a project + rpc AddMember(ProjectServiceAddMemberRequest) returns (ProjectServiceAddMemberResponse) { + option (project_roles) = PROJECT_ROLE_OWNER; + option (auditing) = AUDITING_INCLUDED; + } // RemoveMember removes a user from a project rpc RemoveMember(ProjectServiceRemoveMemberRequest) returns (ProjectServiceRemoveMemberResponse) { option (project_roles) = PROJECT_ROLE_OWNER; @@ -53,6 +59,7 @@ service ProjectService { option (project_roles) = PROJECT_ROLE_OWNER; option (auditing) = AUDITING_INCLUDED; } + // Invite a user to a project rpc Invite(ProjectServiceInviteRequest) returns (ProjectServiceInviteResponse) { option (project_roles) = PROJECT_ROLE_OWNER; @@ -278,6 +285,22 @@ message ProjectServiceLeaveRequest { // ProjectServiceLeaveResponse is the response payload to a leave project request message ProjectServiceLeaveResponse {} +// ProjectServiceAddMemberRequest is the request payload for adding a member to a project +message ProjectServiceAddMemberRequest { + // Project is the uuid of the project + string project = 1 [(buf.validate.field).string.uuid = true]; + // Login of the member to add + string member = 2 [(buf.validate.field).string.(metalstack.api.v2.is_tenant_login) = true]; + // Role to assign to the new member + ProjectRole role = 3 [(buf.validate.field).enum.defined_only = true]; +} + +// ProjectServiceAddMemberResponse is the response payload for the add member request +message ProjectServiceAddMemberResponse { + // ProjectRole is the added project member + ProjectRole project_member = 1; +} + // ProjectServiceRemoveMemberRequest is used to remove a member from a project message ProjectServiceRemoveMemberRequest { // Project is the uuid of the project diff --git a/proto/metalstack/api/v2/tenant.proto b/proto/metalstack/api/v2/tenant.proto index 4a318de0..629edf3a 100644 --- a/proto/metalstack/api/v2/tenant.proto +++ b/proto/metalstack/api/v2/tenant.proto @@ -46,6 +46,12 @@ service TenantService { option (auditing) = AUDITING_INCLUDED; } + // AddMember adds a member to a tenant + rpc AddMember(TenantServiceAddMemberRequest) returns (TenantServiceAddMemberResponse) { + option (tenant_roles) = TENANT_ROLE_OWNER; + option (tenant_roles) = TENANT_ROLE_EDITOR; + option (auditing) = AUDITING_INCLUDED; + } // RemoveMember removes a member from a tenant rpc RemoveMember(TenantServiceRemoveMemberRequest) returns (TenantServiceRemoveMemberResponse) { option (tenant_roles) = TENANT_ROLE_OWNER; @@ -291,7 +297,10 @@ message TenantServiceLeaveRequest { message TenantServiceLeaveResponse {} // TenantServiceRemoveMemberResponse is the response payload to a remove member request -message TenantServiceRemoveMemberResponse {} +message TenantServiceRemoveMemberResponse { + // TenantMember is the removed tenant member + TenantMember tenant_member = 1; +} // TenantServiceInviteAcceptRequest is the request payload to a accept invite request message TenantServiceInviteAcceptRequest { @@ -318,6 +327,22 @@ message TenantServiceInviteDeleteRequest { // TenantServiceInviteDeleteResponse is the response payload of a delete invite request message TenantServiceInviteDeleteResponse {} +// TenantServiceAddMemberRequest is the request payload for adding a member to a tenant +message TenantServiceAddMemberRequest { + // Login of the tenant to which the member will be added + string login = 1 [(buf.validate.field).string.(metalstack.api.v2.is_tenant_login) = true]; + // Login of the member to add + string member = 2 [(buf.validate.field).string.(metalstack.api.v2.is_tenant_login) = true]; + // Role to assign to the new member + TenantRole role = 3 [(buf.validate.field).enum.defined_only = true]; +} + +// TenantServiceAddMemberResponse is the response payload for the add member request +message TenantServiceAddMemberResponse { + // TenantMember is the added tenant member + TenantMember tenant_member = 1; +} + // TenantServiceUpdateMemberRequest is used to update a member from a tenant message TenantServiceUpdateMemberRequest { // Login of the tenant diff --git a/python/metalstack/admin/v2/tenant_pb2.py b/python/metalstack/admin/v2/tenant_pb2.py index 1202e8b9..6e378429 100644 --- a/python/metalstack/admin/v2/tenant_pb2.py +++ b/python/metalstack/admin/v2/tenant_pb2.py @@ -28,7 +28,7 @@ from metalstack.api.v2 import tenant_pb2 as metalstack_dot_api_dot_v2_dot_tenant__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xa2\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x18TenantServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.TenantQueryR\x05query\"\x80\x01\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\x12 \n\tnext_page\x18\x02 \x01(\x04H\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page\"\xa6\x01\n\x1dTenantServiceAddMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\" \n\x1eTenantServiceAddMemberResponse\"l\n TenantServiceRemoveMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"#\n!TenantServiceRemoveMemberResponse2\x86\x04\n\rTenantService\x12v\n\x06\x43reate\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a\x30.metalstack.admin.v2.TenantServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12q\n\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x7f\n\tAddMember\x12\x32.metalstack.admin.v2.TenantServiceAddMemberRequest\x1a\x33.metalstack.admin.v2.TenantServiceAddMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x88\x01\n\x0cRemoveMember\x12\x35.metalstack.admin.v2.TenantServiceRemoveMemberRequest\x1a\x36.metalstack.admin.v2.TenantServiceRemoveMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bTenantProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xa2\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x18TenantServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.TenantQueryR\x05query\"\x80\x01\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\x12 \n\tnext_page\x18\x02 \x01(\x04H\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page\"\xa6\x01\n\x1dTenantServiceAddMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n\x1eTenantServiceAddMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember\"l\n TenantServiceRemoveMemberRequest\x12#\n\x06tenant\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06tenant\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\"i\n!TenantServiceRemoveMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\x86\x04\n\rTenantService\x12v\n\x06\x43reate\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a\x30.metalstack.admin.v2.TenantServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12q\n\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x7f\n\tAddMember\x12\x32.metalstack.admin.v2.TenantServiceAddMemberRequest\x1a\x33.metalstack.admin.v2.TenantServiceAddMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x88\x01\n\x0cRemoveMember\x12\x35.metalstack.admin.v2.TenantServiceRemoveMemberRequest\x1a\x36.metalstack.admin.v2.TenantServiceRemoveMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bTenantProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -73,11 +73,11 @@ _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_start=781 _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_end=947 _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_start=949 - _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_end=981 - _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=983 - _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=1091 - _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=1093 - _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=1128 - _globals['_TENANTSERVICE']._serialized_start=1131 - _globals['_TENANTSERVICE']._serialized_end=1649 + _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_end=1051 + _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=1053 + _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=1161 + _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=1163 + _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=1268 + _globals['_TENANTSERVICE']._serialized_start=1271 + _globals['_TENANTSERVICE']._serialized_end=1789 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/admin/v2/tenant_pb2.pyi b/python/metalstack/admin/v2/tenant_pb2.pyi index 79b559c7..77b01eb8 100644 --- a/python/metalstack/admin/v2/tenant_pb2.pyi +++ b/python/metalstack/admin/v2/tenant_pb2.pyi @@ -55,8 +55,10 @@ class TenantServiceAddMemberRequest(_message.Message): def __init__(self, tenant: _Optional[str] = ..., member: _Optional[str] = ..., role: _Optional[_Union[_common_pb2.TenantRole, str]] = ...) -> None: ... class TenantServiceAddMemberResponse(_message.Message): - __slots__ = () - def __init__(self) -> None: ... + __slots__ = ("tenant_member",) + TENANT_MEMBER_FIELD_NUMBER: _ClassVar[int] + tenant_member: _tenant_pb2.TenantMember + def __init__(self, tenant_member: _Optional[_Union[_tenant_pb2.TenantMember, _Mapping]] = ...) -> None: ... class TenantServiceRemoveMemberRequest(_message.Message): __slots__ = ("tenant", "member") @@ -67,5 +69,7 @@ class TenantServiceRemoveMemberRequest(_message.Message): def __init__(self, tenant: _Optional[str] = ..., member: _Optional[str] = ...) -> None: ... class TenantServiceRemoveMemberResponse(_message.Message): - __slots__ = () - def __init__(self) -> None: ... + __slots__ = ("tenant_member",) + TENANT_MEMBER_FIELD_NUMBER: _ClassVar[int] + tenant_member: _tenant_pb2.TenantMember + def __init__(self, tenant_member: _Optional[_Union[_tenant_pb2.TenantMember, _Mapping]] = ...) -> None: ... diff --git a/python/metalstack/api/v2/project_connect.py b/python/metalstack/api/v2/project_connect.py index 25cf4405..183dad9f 100644 --- a/python/metalstack/api/v2/project_connect.py +++ b/python/metalstack/api/v2/project_connect.py @@ -36,6 +36,9 @@ async def update(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.Proje async def leave(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def add_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def remove_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") @@ -123,6 +126,16 @@ def __init__(self, service: ProjectService | AsyncGenerator[ProjectService], *, ), function=svc.leave, ), + "/metalstack.api.v2.ProjectService/AddMember": Endpoint.unary( + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.add_member, + ), "/metalstack.api.v2.ProjectService/RemoveMember": Endpoint.unary( method=MethodInfo( name="RemoveMember", @@ -327,6 +340,26 @@ async def leave( timeout_ms=timeout_ms, ) + async def add_member( + self, + request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + async def remove_member( self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, @@ -484,6 +517,8 @@ def update(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def leave(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def add_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def remove_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def update_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateMemberResponse: @@ -564,6 +599,16 @@ def __init__(self, service: ProjectServiceSync, interceptors: Iterable[Intercept ), function=service.leave, ), + "/metalstack.api.v2.ProjectService/AddMember": EndpointSync.unary( + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.add_member, + ), "/metalstack.api.v2.ProjectService/RemoveMember": EndpointSync.unary( method=MethodInfo( name="RemoveMember", @@ -768,6 +813,26 @@ def leave( timeout_ms=timeout_ms, ) + def add_member( + self, + request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + def remove_member( self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, diff --git a/python/metalstack/api/v2/project_pb2.py b/python/metalstack/api/v2/project_pb2.py index 70921cb0..820afd07 100644 --- a/python/metalstack/api/v2/project_pb2.py +++ b/python/metalstack/api/v2/project_pb2.py @@ -28,7 +28,7 @@ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/project.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xf2\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12/\n\navatar_url\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xf8\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x04meta\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"R\n\x19ProjectServiceListRequest\x12\x35\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryR\x05query\"\xe1\x01\n\x0cProjectQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12(\n\x06tenant\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\x83\x02\n\x1bProjectServiceCreateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x85\x03\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12/\n\navatar_url\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n\x1aProjectServiceLeaveRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x1d\n\x1bProjectServiceLeaveResponse\"_\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\"\xf2\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12/\n\navatar_url\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xf8\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x04meta\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"R\n\x19ProjectServiceListRequest\x12\x35\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.ProjectQueryR\x05query\"\xe1\x01\n\x0cProjectQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12(\n\x06tenant\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\x83\x02\n\x1bProjectServiceCreateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x85\x03\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12/\n\navatar_url\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n\x1aProjectServiceLeaveRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x1d\n\x1bProjectServiceLeaveResponse\"\xa7\x01\n\x1eProjectServiceAddMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"h\n\x1fProjectServiceAddMemberResponse\x12\x45\n\x0eproject_member\x18\x01 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\rprojectMember\"_\n!ProjectServiceRemoveMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"$\n\"ProjectServiceRemoveMemberResponse\"\x9d\x01\n!ProjectServiceUpdateMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n\"ProjectServiceUpdateMemberResponse\x12G\n\x0eproject_member\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n!ProjectServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"a\n\"ProjectServiceInviteAcceptResponse\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12!\n\x0cproject_name\x18\x02 \x01(\tR\x0bprojectName\"_\n!ProjectServiceInviteDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"$\n\"ProjectServiceInviteDeleteResponse2\xe1\r\n\x0eProjectService\x12m\n\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12m\n\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.ProjectServiceCreateRequest\x1a/.metalstack.api.v2.ProjectServiceCreateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n\x06\x44\x65lete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12}\n\tAddMember\x12\x31.metalstack.api.v2.ProjectServiceAddMemberRequest\x1a\x32.metalstack.api.v2.ProjectServiceAddMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cRemoveMember\x12\x34.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cUpdateMember\x12\x34.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n\x0cInviteAccept\x12\x34.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x86\x01\n\x0cInviteDelete\x12\x34.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0bInvitesList\x12\x33.metalstack.api.v2.ProjectServiceInvitesListRequest\x1a\x34.metalstack.api.v2.ProjectServiceInvitesListResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12|\n\tInviteGet\x12\x31.metalstack.api.v2.ProjectServiceInviteGetRequest\x1a\x32.metalstack.api.v2.ProjectServiceInviteGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -82,6 +82,12 @@ _globals['_PROJECTSERVICEINVITESLISTREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_PROJECTSERVICELEAVEREQUEST'].fields_by_name['project']._loaded_options = None _globals['_PROJECTSERVICELEAVEREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001' + _globals['_PROJECTSERVICEADDMEMBERREQUEST'].fields_by_name['project']._loaded_options = None + _globals['_PROJECTSERVICEADDMEMBERREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001' + _globals['_PROJECTSERVICEADDMEMBERREQUEST'].fields_by_name['member']._loaded_options = None + _globals['_PROJECTSERVICEADDMEMBERREQUEST'].fields_by_name['member']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001' + _globals['_PROJECTSERVICEADDMEMBERREQUEST'].fields_by_name['role']._loaded_options = None + _globals['_PROJECTSERVICEADDMEMBERREQUEST'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST'].fields_by_name['project']._loaded_options = None _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST'].fields_by_name['project']._loaded_options = None @@ -102,6 +108,8 @@ _globals['_PROJECTSERVICE'].methods_by_name['Update']._serialized_options = b'\312\363\030\002\001\002\340\363\030\001' _globals['_PROJECTSERVICE'].methods_by_name['Leave']._loaded_options = None _globals['_PROJECTSERVICE'].methods_by_name['Leave']._serialized_options = b'\312\363\030\001\003\340\363\030\001' + _globals['_PROJECTSERVICE'].methods_by_name['AddMember']._loaded_options = None + _globals['_PROJECTSERVICE'].methods_by_name['AddMember']._serialized_options = b'\312\363\030\001\001\340\363\030\001' _globals['_PROJECTSERVICE'].methods_by_name['RemoveMember']._loaded_options = None _globals['_PROJECTSERVICE'].methods_by_name['RemoveMember']._serialized_options = b'\312\363\030\001\001\340\363\030\001' _globals['_PROJECTSERVICE'].methods_by_name['UpdateMember']._loaded_options = None @@ -160,22 +168,26 @@ _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_end=3251 _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_start=3253 _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_end=3282 - _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3284 - _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3379 - _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3381 - _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3417 - _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3420 - _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3577 - _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3579 - _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3688 - _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3690 - _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=3749 - _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3751 - _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3848 - _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=3850 - _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=3945 - _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=3947 - _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=3983 - _globals['_PROJECTSERVICE']._serialized_start=3986 - _globals['_PROJECTSERVICE']._serialized_end=5620 + _globals['_PROJECTSERVICEADDMEMBERREQUEST']._serialized_start=3285 + _globals['_PROJECTSERVICEADDMEMBERREQUEST']._serialized_end=3452 + _globals['_PROJECTSERVICEADDMEMBERRESPONSE']._serialized_start=3454 + _globals['_PROJECTSERVICEADDMEMBERRESPONSE']._serialized_end=3558 + _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3560 + _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3655 + _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3657 + _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3693 + _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3696 + _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3853 + _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3855 + _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3964 + _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3966 + _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=4025 + _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=4027 + _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=4124 + _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=4126 + _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=4221 + _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=4223 + _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=4259 + _globals['_PROJECTSERVICE']._serialized_start=4262 + _globals['_PROJECTSERVICE']._serialized_end=6023 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/api/v2/project_pb2.pyi b/python/metalstack/api/v2/project_pb2.pyi index 3fff6c0d..0f82ba19 100644 --- a/python/metalstack/api/v2/project_pb2.pyi +++ b/python/metalstack/api/v2/project_pb2.pyi @@ -204,6 +204,22 @@ class ProjectServiceLeaveResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... +class ProjectServiceAddMemberRequest(_message.Message): + __slots__ = ("project", "member", "role") + PROJECT_FIELD_NUMBER: _ClassVar[int] + MEMBER_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + project: str + member: str + role: _common_pb2.ProjectRole + def __init__(self, project: _Optional[str] = ..., member: _Optional[str] = ..., role: _Optional[_Union[_common_pb2.ProjectRole, str]] = ...) -> None: ... + +class ProjectServiceAddMemberResponse(_message.Message): + __slots__ = ("project_member",) + PROJECT_MEMBER_FIELD_NUMBER: _ClassVar[int] + project_member: _common_pb2.ProjectRole + def __init__(self, project_member: _Optional[_Union[_common_pb2.ProjectRole, str]] = ...) -> None: ... + class ProjectServiceRemoveMemberRequest(_message.Message): __slots__ = ("project", "member") PROJECT_FIELD_NUMBER: _ClassVar[int] diff --git a/python/metalstack/api/v2/tenant_connect.py b/python/metalstack/api/v2/tenant_connect.py index 5b116b08..128d03a3 100644 --- a/python/metalstack/api/v2/tenant_connect.py +++ b/python/metalstack/api/v2/tenant_connect.py @@ -36,6 +36,9 @@ async def delete(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.Tenant async def leave(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def add_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def remove_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") @@ -123,6 +126,16 @@ def __init__(self, service: TenantService | AsyncGenerator[TenantService], *, in ), function=svc.leave, ), + "/metalstack.api.v2.TenantService/AddMember": Endpoint.unary( + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.add_member, + ), "/metalstack.api.v2.TenantService/RemoveMember": Endpoint.unary( method=MethodInfo( name="RemoveMember", @@ -327,6 +340,26 @@ async def leave( timeout_ms=timeout_ms, ) + async def add_member( + self, + request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + async def remove_member( self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, @@ -484,6 +517,8 @@ def delete(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServic raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def leave(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def add_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def remove_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def update_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceUpdateMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceUpdateMemberResponse: @@ -564,6 +599,16 @@ def __init__(self, service: TenantServiceSync, interceptors: Iterable[Intercepto ), function=service.leave, ), + "/metalstack.api.v2.TenantService/AddMember": EndpointSync.unary( + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.add_member, + ), "/metalstack.api.v2.TenantService/RemoveMember": EndpointSync.unary( method=MethodInfo( name="RemoveMember", @@ -768,6 +813,26 @@ def leave( timeout_ms=timeout_ms, ) + def add_member( + self, + request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="AddMember", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceAddMemberResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + def remove_member( self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, diff --git a/python/metalstack/api/v2/tenant_pb2.py b/python/metalstack/api/v2/tenant_pb2.py index 3b2a8d9f..9e78b44d 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\"\x92\x02\n\x06Tenant\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\x1d\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01R\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*\n\navatar_url\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01R\tavatarUrl\x12\x1d\n\ncreated_by\x18\x07 \x01(\tR\tcreatedBy\"\xec\x01\n\x0cTenantMember\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"P\n\x18TenantServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.TenantQueryR\x05query\"\xe4\x01\n\x0bTenantQuery\x12&\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01H\x00R\x05login\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\x12\x31\n\x06paging\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.PagingR\x06pagingB\x08\n\x06_loginB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\xa2\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"\xb1\x03\n\x1aTenantServiceUpdateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\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\"?\n\x1aTenantServiceDeleteRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"|\n\x1aTenantServiceInviteRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"D\n\x1fTenantServiceInvitesListRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"]\n TenantServiceRemoveMemberRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\">\n\x19TenantServiceLeaveRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"]\n TenantServiceInviteDeleteRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\xa7\x01\n TenantServiceUpdateMemberRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"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\"\x92\x02\n\x06Tenant\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\x1d\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01R\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*\n\navatar_url\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01R\tavatarUrl\x12\x1d\n\ncreated_by\x18\x07 \x01(\tR\tcreatedBy\"\xec\x01\n\x0cTenantMember\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"P\n\x18TenantServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.TenantQueryR\x05query\"\xe4\x01\n\x0bTenantQuery\x12&\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01H\x00R\x05login\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\x12\x31\n\x06paging\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.PagingR\x06pagingB\x08\n\x06_loginB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\xa2\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12/\n\navatar_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"\xb1\x03\n\x1aTenantServiceUpdateRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01H\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\"?\n\x1aTenantServiceDeleteRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"|\n\x1aTenantServiceInviteRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"D\n\x1fTenantServiceInvitesListRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\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\"]\n TenantServiceRemoveMemberRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\">\n\x19TenantServiceLeaveRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\"\x1c\n\x1aTenantServiceLeaveResponse\"i\n!TenantServiceRemoveMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember\":\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\"]\n TenantServiceInviteDeleteRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\xa4\x01\n\x1dTenantServiceAddMemberRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"f\n\x1eTenantServiceAddMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember\"\xa7\x01\n TenantServiceUpdateMemberRequest\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x05login\x12#\n\x06member\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\x90\xb4\xae\xb1\x02\x01R\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n!TenantServiceUpdateMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\xc5\r\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|\n\tAddMember\x12\x30.metalstack.api.v2.TenantServiceAddMemberRequest\x1a\x31.metalstack.api.v2.TenantServiceAddMemberResponse\"\n\xc2\xf3\x18\x02\x01\x02\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) @@ -90,6 +90,12 @@ _globals['_TENANTSERVICELEAVEREQUEST'].fields_by_name['login']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001' _globals['_TENANTSERVICEINVITEDELETEREQUEST'].fields_by_name['login']._loaded_options = None _globals['_TENANTSERVICEINVITEDELETEREQUEST'].fields_by_name['login']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001' + _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['login']._loaded_options = None + _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['login']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001' + _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['member']._loaded_options = None + _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['member']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001' + _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['role']._loaded_options = None + _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_TENANTSERVICEUPDATEMEMBERREQUEST'].fields_by_name['login']._loaded_options = None _globals['_TENANTSERVICEUPDATEMEMBERREQUEST'].fields_by_name['login']._serialized_options = b'\272H\010r\006\220\264\256\261\002\001' _globals['_TENANTSERVICEUPDATEMEMBERREQUEST'].fields_by_name['member']._loaded_options = None @@ -108,6 +114,8 @@ _globals['_TENANTSERVICE'].methods_by_name['Delete']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001' _globals['_TENANTSERVICE'].methods_by_name['Leave']._loaded_options = None _globals['_TENANTSERVICE'].methods_by_name['Leave']._serialized_options = b'\302\363\030\001\003\340\363\030\001' + _globals['_TENANTSERVICE'].methods_by_name['AddMember']._loaded_options = None + _globals['_TENANTSERVICE'].methods_by_name['AddMember']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001' _globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._loaded_options = None _globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._serialized_options = b'\302\363\030\001\001\340\363\030\001' _globals['_TENANTSERVICE'].methods_by_name['UpdateMember']._loaded_options = None @@ -169,19 +177,23 @@ _globals['_TENANTSERVICELEAVERESPONSE']._serialized_start=3409 _globals['_TENANTSERVICELEAVERESPONSE']._serialized_end=3437 _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3439 - _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3474 - _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3476 - _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3534 - _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3536 - _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3628 - _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3630 - _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3723 - _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3725 - _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3760 - _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3763 - _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3930 - _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3932 - _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=4037 - _globals['_TENANTSERVICE']._serialized_start=4040 - _globals['_TENANTSERVICE']._serialized_end=5647 + _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3544 + _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3546 + _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3604 + _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3606 + _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3698 + _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3700 + _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3793 + _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3795 + _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3830 + _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_start=3833 + _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_end=3997 + _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_start=3999 + _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_end=4101 + _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=4104 + _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=4271 + _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=4273 + _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=4378 + _globals['_TENANTSERVICE']._serialized_start=4381 + _globals['_TENANTSERVICE']._serialized_end=6114 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/api/v2/tenant_pb2.pyi b/python/metalstack/api/v2/tenant_pb2.pyi index 009463d5..4f008c9e 100644 --- a/python/metalstack/api/v2/tenant_pb2.pyi +++ b/python/metalstack/api/v2/tenant_pb2.pyi @@ -217,8 +217,10 @@ class TenantServiceLeaveResponse(_message.Message): def __init__(self) -> None: ... class TenantServiceRemoveMemberResponse(_message.Message): - __slots__ = () - def __init__(self) -> None: ... + __slots__ = ("tenant_member",) + TENANT_MEMBER_FIELD_NUMBER: _ClassVar[int] + tenant_member: TenantMember + def __init__(self, tenant_member: _Optional[_Union[TenantMember, _Mapping]] = ...) -> None: ... class TenantServiceInviteAcceptRequest(_message.Message): __slots__ = ("secret",) @@ -246,6 +248,22 @@ class TenantServiceInviteDeleteResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... +class TenantServiceAddMemberRequest(_message.Message): + __slots__ = ("login", "member", "role") + LOGIN_FIELD_NUMBER: _ClassVar[int] + MEMBER_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + login: str + member: str + role: _common_pb2.TenantRole + def __init__(self, login: _Optional[str] = ..., member: _Optional[str] = ..., role: _Optional[_Union[_common_pb2.TenantRole, str]] = ...) -> None: ... + +class TenantServiceAddMemberResponse(_message.Message): + __slots__ = ("tenant_member",) + TENANT_MEMBER_FIELD_NUMBER: _ClassVar[int] + tenant_member: TenantMember + def __init__(self, tenant_member: _Optional[_Union[TenantMember, _Mapping]] = ...) -> None: ... + class TenantServiceUpdateMemberRequest(_message.Message): __slots__ = ("login", "member", "role") LOGIN_FIELD_NUMBER: _ClassVar[int]