From f9e9f9cdfff2a05463e826c4f2910541e1916c94 Mon Sep 17 00:00:00 2001 From: Iraq Jaber Date: Mon, 12 May 2025 09:00:03 +0200 Subject: [PATCH] fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge branch 'main' into org_api --- internal/api/grpc/org/v2beta/helper.go | 2 +- .../org/v2beta/integration_test/org_test.go | 62 +++++++++---------- internal/api/grpc/org/v2beta/org.go | 14 ++--- proto/zitadel/org/v2beta/org_service.proto | 35 ++++------- 4 files changed, 52 insertions(+), 61 deletions(-) diff --git a/internal/api/grpc/org/v2beta/helper.go b/internal/api/grpc/org/v2beta/helper.go index 176ea57978..643ae71ca3 100644 --- a/internal/api/grpc/org/v2beta/helper.go +++ b/internal/api/grpc/org/v2beta/helper.go @@ -28,7 +28,7 @@ func listOrgRequestToModel(systemDefaults systemdefaults.SystemDefaults, request if err != nil { return nil, err } - queries, err := OrgQueriesToModel(request.Filter) + queries, err := OrgQueriesToModel(request.OrganizationSearchFilter) if err != nil { return nil, err } diff --git a/internal/api/grpc/org/v2beta/integration_test/org_test.go b/internal/api/grpc/org/v2beta/integration_test/org_test.go index 5ed6b1a014..e90820f180 100644 --- a/internal/api/grpc/org/v2beta/integration_test/org_test.go +++ b/internal/api/grpc/org/v2beta/integration_test/org_test.go @@ -445,7 +445,7 @@ func TestServer_ListOrganization(t *testing.T) { DomainQuery: &org.OrgDomainQuery{ Domain: func() string { listOrgRes, err := Client.ListOrganizations(CTX, &v2beta_org.ListOrganizationsRequest{ - Filter: []*v2beta_org.OrgQueryFilter{ + OrganizationSearchFilter: []*v2beta_org.OrgQueryFilter{ { Query: &v2beta_org.OrgQueryFilter_IdQuery{ IdQuery: &v2beta_org.OrgIDQuery{ @@ -456,7 +456,7 @@ func TestServer_ListOrganization(t *testing.T) { }, }) require.NoError(t, err) - domain := listOrgRes.Result[0].PrimaryDomain + domain := listOrgRes.Organizations[0].PrimaryDomain return domain }(), Method: v2beta_object.TextQueryMethod_TEXT_QUERY_METHOD_EQUALS, @@ -523,7 +523,7 @@ func TestServer_ListOrganization(t *testing.T) { retryDuration, tick := integration.WaitForAndTickWithMaxDuration(context.Background(), 10*time.Minute) require.EventuallyWithT(t, func(ttt *assert.CollectT) { got, err := Client.ListOrganizations(tt.ctx, &v2beta_org.ListOrganizationsRequest{ - Filter: tt.query, + OrganizationSearchFilter: tt.query, }) if tt.wantErr { @@ -533,7 +533,7 @@ func TestServer_ListOrganization(t *testing.T) { require.NoError(t, err) foundOrgs := 0 - for _, got := range got.Result { + for _, got := range got.Organizations { for _, org := range tt.want { if org.Name == got.Name && org.Id == got.Id { @@ -596,7 +596,7 @@ func TestServer_DeleteOrganization(t *testing.T) { assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute)) listOrgRes, err := Client.ListOrganizations(tt.ctx, &v2beta_org.ListOrganizationsRequest{ - Filter: []*v2beta_org.OrgQueryFilter{ + OrganizationSearchFilter: []*v2beta_org.OrgQueryFilter{ { Query: &v2beta_org.OrgQueryFilter_IdQuery{ IdQuery: &v2beta_org.OrgIDQuery{ @@ -607,7 +607,7 @@ func TestServer_DeleteOrganization(t *testing.T) { }, }) require.NoError(t, err) - require.Nil(t, listOrgRes.Result) + require.Nil(t, listOrgRes.Organizations) }) } } @@ -622,7 +622,7 @@ func TestServer_DeactivateReactivateNonExistentOrganization(t *testing.T) { require.Contains(t, err.Error(), "Organisation not found") // reactivate non existent organization - _, err = Client.ReactivateOrganization(ctx, &v2beta_org.ReactivateOrganizationRequest{ + _, err = Client.ActivateOrganization(ctx, &v2beta_org.ActivateOrganizationRequest{ Id: "non existent organization", }) require.Contains(t, err.Error(), "Organisation not found") @@ -639,7 +639,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { // 2. check inital state of organization listOrgRes, err := Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{ - Filter: []*v2beta_org.OrgQueryFilter{ + OrganizationSearchFilter: []*v2beta_org.OrgQueryFilter{ { Query: &v2beta_org.OrgQueryFilter_IdQuery{ IdQuery: &v2beta_org.OrgIDQuery{ @@ -650,7 +650,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { }, }) require.NoError(t, err) - require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Result[0].State) + require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Organizations[0].State) // 3. deactivate organization once deactivate_res, err := Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{ @@ -663,7 +663,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { // 4. check organization state is deactivated listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{ - Filter: []*v2beta_org.OrgQueryFilter{ + OrganizationSearchFilter: []*v2beta_org.OrgQueryFilter{ { Query: &v2beta_org.OrgQueryFilter_IdQuery{ IdQuery: &v2beta_org.OrgIDQuery{ @@ -674,7 +674,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { }, }) require.NoError(t, err) - require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Result[0].State) + require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Organizations[0].State) // 5. repeat deactivate organization once // deactivate_res, err = Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{ @@ -686,7 +686,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { // 6. repeat check organization state is still deactivated listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{ - Filter: []*v2beta_org.OrgQueryFilter{ + OrganizationSearchFilter: []*v2beta_org.OrgQueryFilter{ { Query: &v2beta_org.OrgQueryFilter_IdQuery{ IdQuery: &v2beta_org.OrgIDQuery{ @@ -697,10 +697,10 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { }, }) require.NoError(t, err) - require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Result[0].State) + require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Organizations[0].State) // 7. reactivate organization - reactivate_res, err := Client.ReactivateOrganization(ctx, &v2beta_org.ReactivateOrganizationRequest{ + reactivate_res, err := Client.ActivateOrganization(ctx, &v2beta_org.ActivateOrganizationRequest{ Id: orgId, }) require.NoError(t, err) @@ -710,7 +710,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { // 8. check organization state is active listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{ - Filter: []*v2beta_org.OrgQueryFilter{ + OrganizationSearchFilter: []*v2beta_org.OrgQueryFilter{ { Query: &v2beta_org.OrgQueryFilter_IdQuery{ IdQuery: &v2beta_org.OrgIDQuery{ @@ -721,10 +721,10 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { }, }) require.NoError(t, err) - require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Result[0].State) + require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Organizations[0].State) // 9. repeat reactivate organization - reactivate_res, err = Client.ReactivateOrganization(ctx, &v2beta_org.ReactivateOrganizationRequest{ + reactivate_res, err = Client.ActivateOrganization(ctx, &v2beta_org.ActivateOrganizationRequest{ Id: orgId, }) // TODO remove this error message @@ -732,7 +732,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { // 10. repeat check organization state is still active listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{ - Filter: []*v2beta_org.OrgQueryFilter{ + OrganizationSearchFilter: []*v2beta_org.OrgQueryFilter{ { Query: &v2beta_org.OrgQueryFilter_IdQuery{ IdQuery: &v2beta_org.OrgIDQuery{ @@ -743,7 +743,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) { }, }) require.NoError(t, err) - require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Result[0].State) + require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Organizations[0].State) } func TestServer_AddOListDeleterganizationDomain(t *testing.T) { @@ -813,7 +813,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) { }) require.NoError(t, err) // check details - gotCD = deleteOrgDomainRes.GetChangeDate().AsTime() + gotCD = deleteOrgDomainRes.GetDeletionDate().AsTime() now = time.Now() assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute)) @@ -986,7 +986,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key3", @@ -1005,7 +1005,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key5", @@ -1026,7 +1026,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) { tt.setupFunc() } got, err := Client.SetOrganizationMetadata(tt.ctx, &v2beta_org.SetOrganizationMetadataRequest{ - Id: tt.orgId, + OrganizationId: tt.orgId, Metadata: []*v2beta_org.Metadata{ { Key: tt.key, @@ -1041,7 +1041,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) { require.NoError(t, err) // check details - gotCD := got.GetChangeDate().AsTime() + gotCD := got.GetSetDate().AsTime() now := time.Now() assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute)) @@ -1089,7 +1089,7 @@ func TestServer_ListOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key1", @@ -1112,7 +1112,7 @@ func TestServer_ListOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key2", @@ -1204,7 +1204,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key1", @@ -1227,7 +1227,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key2", @@ -1258,7 +1258,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key4", @@ -1300,7 +1300,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key88", @@ -1323,7 +1323,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) { ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), setupFunc: func() { _, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{ - Id: orgId, + OrganizationId: orgId, Metadata: []*v2beta_org.Metadata{ { Key: "key88", diff --git a/internal/api/grpc/org/v2beta/org.go b/internal/api/grpc/org/v2beta/org.go index 1a451df47a..ab0622dbd8 100644 --- a/internal/api/grpc/org/v2beta/org.go +++ b/internal/api/grpc/org/v2beta/org.go @@ -49,7 +49,7 @@ func (s *Server) ListOrganizations(ctx context.Context, request *v2beta_org.List return nil, err } return &v2beta_org.ListOrganizationsResponse{ - Result: OrgViewsToPb(orgs.Orgs), + Organizations: OrgViewsToPb(orgs.Orgs), Pagination: &filter.PaginationResponse{ TotalResult: orgs.Count, AppliedLimit: uint64(request.GetPagination().GetLimit()), @@ -68,12 +68,12 @@ func (s *Server) DeleteOrganization(ctx context.Context, request *v2beta_org.Del } func (s *Server) SetOrganizationMetadata(ctx context.Context, request *v2beta_org.SetOrganizationMetadataRequest) (*v2beta_org.SetOrganizationMetadataResponse, error) { - result, err := s.command.BulkSetOrgMetadata(ctx, request.Id, BulkSetOrgMetadataToDomain(request)...) + result, err := s.command.BulkSetOrgMetadata(ctx, request.OrganizationId, BulkSetOrgMetadataToDomain(request)...) if err != nil { return nil, err } return &org.SetOrganizationMetadataResponse{ - ChangeDate: timestamppb.New(result.EventDate), + SetDate: timestamppb.New(result.EventDate), }, nil } @@ -101,7 +101,7 @@ func (s *Server) DeleteOrganizationMetadata(ctx context.Context, request *v2beta return nil, err } return &v2beta_org.DeleteOrganizationMetadataResponse{ - ChangeDate: timestamppb.New(result.EventDate), + DeletionDate: timestamppb.New(result.EventDate), }, nil } @@ -115,12 +115,12 @@ func (s *Server) DeactivateOrganization(ctx context.Context, request *org.Deacti }, nil } -func (s *Server) ReactivateOrganization(ctx context.Context, request *org.ReactivateOrganizationRequest) (*org.ReactivateOrganizationResponse, error) { +func (s *Server) ActivateOrganization(ctx context.Context, request *org.ActivateOrganizationRequest) (*org.ActivateOrganizationResponse, error) { objectDetails, err := s.command.ReactivateOrg(ctx, request.Id) if err != nil { return nil, err } - return &org.ReactivateOrganizationResponse{ + return &org.ActivateOrganizationResponse{ ChangeDate: timestamppb.New(objectDetails.EventDate), }, err } @@ -169,7 +169,7 @@ func (s *Server) DeleteOrganizationDomain(ctx context.Context, req *org.DeleteOr return nil, err } return &org.DeleteOrganizationDomainResponse{ - ChangeDate: timestamppb.New(details.EventDate), + DeletionDate: timestamppb.New(details.EventDate), }, err } diff --git a/proto/zitadel/org/v2beta/org_service.proto b/proto/zitadel/org/v2beta/org_service.proto index ba1c37c0d4..f300398145 100644 --- a/proto/zitadel/org/v2beta/org_service.proto +++ b/proto/zitadel/org/v2beta/org_service.proto @@ -383,15 +383,15 @@ service OrganizationService { } - // Reactivate Organization + // Activate Organization // // Set the state of my organization to active. The state of the organization has to be deactivated to perform the request. Users of this organization will be able to log in again. // // Required permission: // - `org.write` - rpc ReactivateOrganization(ReactivateOrganizationRequest) returns (ReactivateOrganizationResponse) { + rpc ActivateOrganization(ActivateOrganizationRequest) returns (ActivateOrganizationResponse) { option (google.api.http) = { - post: "/v2beta/organizations/_reactivate" + post: "/v2beta/organizations/_activate" body: "*" }; @@ -468,7 +468,6 @@ message UpdateOrganizationRequest { min_length: 1; max_length: 200; example: "\"69629012906488334\""; - description: "Organization ID of the organization you want to update." } ]; @@ -494,27 +493,20 @@ message UpdateOrganizationResponse { } message ListOrganizationsRequest { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: { - description: "Search query for lists"; - required: ["query"] - }; - }; - // List limitations and ordering. optional zitadel.filter.v2beta.PaginationRequest pagination = 1; // the field the result is sorted zitadel.org.v2beta.OrgFieldName sorting_column = 2; // Define the criteria to query for. // repeated ProjectRoleFilter filters = 4; - repeated zitadel.org.v2beta.OrgQueryFilter filter = 3; + repeated zitadel.org.v2beta.OrgQueryFilter OrganizationSearchFilter = 3; } message ListOrganizationsResponse { // Pagination of the Organizations results zitadel.filter.v2beta.PaginationResponse pagination = 1; // The Organizations requested - repeated zitadel.org.v2beta.Organization result = 2; + repeated zitadel.org.v2beta.Organization organizations = 2; } message DeleteOrganizationRequest { @@ -565,8 +557,8 @@ message DeactivateOrganizationResponse { ]; } -message ReactivateOrganizationRequest { - // Organization Id for the Organization to be reactivated +message ActivateOrganizationRequest { + // Organization Id for the Organization to be activated string id = 1 [ (validate.rules).string = {min_len: 1, max_len: 200}, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { @@ -577,8 +569,8 @@ message ReactivateOrganizationRequest { ]; } -message ReactivateOrganizationResponse { - // The timestamp of the reactivation of the organization. +message ActivateOrganizationResponse { + // The timestamp of the activation of the organization. google.protobuf.Timestamp change_date = 1 [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { example: "\"2025-01-23T10:34:18.051Z\""; @@ -669,7 +661,7 @@ message DeleteOrganizationDomainRequest { message DeleteOrganizationDomainResponse { // The timestamp of the deletion of the organization domain. - google.protobuf.Timestamp change_date = 1 [ + google.protobuf.Timestamp deletion_date = 1 [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { example: "\"2025-01-23T10:34:18.051Z\""; } @@ -685,7 +677,6 @@ message GenerateOrganizationDomainValidationRequest { min_length: 1; max_length: 200; example: "\"69629012906488334\""; - description: "Organization ID of the organization you want to generate a validation request for." } ]; // The domain which to be deleted. @@ -755,7 +746,7 @@ message Metadata { bytes value = 2 [(validate.rules).bytes = {min_len: 1, max_len: 500000}]; } message SetOrganizationMetadataRequest{ - string id = 1; + string organization_id = 1; repeated Metadata metadata = 2 [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { title: "Medata (Key/Value)" @@ -767,7 +758,7 @@ message SetOrganizationMetadataRequest{ message SetOrganizationMetadataResponse{ // The timestamp of the update of the organization metadata. - google.protobuf.Timestamp change_date = 1 [ + google.protobuf.Timestamp set_date = 1 [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { example: "\"2025-01-23T10:34:18.051Z\""; } @@ -808,7 +799,7 @@ message DeleteOrganizationMetadataRequest { message DeleteOrganizationMetadataResponse{ // The timestamp of the deletiion of the organization metadata. - google.protobuf.Timestamp change_date = 1 [ + google.protobuf.Timestamp deletion_date = 1 [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { example: "\"2025-01-23T10:34:18.051Z\""; }