fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge branch 'main' into org_api

This commit is contained in:
Iraq Jaber
2025-05-20 10:35:23 +02:00
parent 5bdc19a6c0
commit 477fb8aba6
5 changed files with 130 additions and 137 deletions

View File

@@ -94,7 +94,7 @@ func DomainsToPb(domains []*query.Domain) []*org_pb.Domain {
func DomainToPb(d *query.Domain) *org_pb.Domain {
return &org_pb.Domain{
OrgId: d.OrgID,
OrganizationId: d.OrgID,
DomainName: d.Domain,
IsVerified: d.IsVerified,
IsPrimary: d.IsPrimary,
@@ -135,17 +135,6 @@ func ToViewDetailsPb(
return details
}
func DomainToChangeDetailsPb(objectDetail *domain.ObjectDetails) *object.Details {
details := &object.Details{
Sequence: objectDetail.Sequence,
ResourceOwner: objectDetail.ResourceOwner,
}
if !objectDetail.EventDate.IsZero() {
details.ChangeDate = timestamppb.New(objectDetail.EventDate)
}
return details
}
func DomainValidationTypeToDomain(validationType org_pb.DomainValidationType) domain.OrgDomainValidationType {
switch validationType {
case org_pb.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP:

View File

@@ -49,12 +49,8 @@ func OrganizationViewToPb(org *query.Org) *v2beta_org.Organization {
State: OrgStateToPb(org.State),
Name: org.Name,
PrimaryDomain: org.Domain,
Details: v2beta_object.ToViewDetailsPb(
org.Sequence,
org.CreationDate,
org.ChangeDate,
org.ResourceOwner,
),
CreationDate: timestamppb.New(org.CreationDate),
ChangedDate: timestamppb.New(org.ChangeDate),
}
}
@@ -94,7 +90,7 @@ func createdOrganizationToPb(createdOrg *command.CreatedOrg) (_ *org.CreateOrgan
func OrgViewsToPb(orgs []*query.Org) []*v2beta_org.Organization {
o := make([]*v2beta_org.Organization, len(orgs))
for i, org := range orgs {
o[i] = OrgViewToPb(org)
o[i] = OrganizationViewToPb(org)
}
return o
}
@@ -110,21 +106,16 @@ func OrgQueriesToModel(queries []*v2beta_org.OrganizationSearchFilter) (_ []quer
return q, nil
}
// *OrganizationSearchFilter_NameQuery
// *OrganizationSearchFilter_DomainQuery
// *OrganizationSearchFilter_StateQuery
// *OrganizationSearchFilter_IdQuery
func OrgQueryToModel(apiQuery *v2beta_org.OrganizationSearchFilter) (query.SearchQuery, error) {
switch q := apiQuery.Query.(type) {
case *v2beta_org.OrganizationSearchFilter_DomainQuery:
return query.NewOrgVerifiedDomainSearchQuery(v2beta_object.TextMethodToQuery(q.DomainQuery.Method), q.DomainQuery.Domain)
case *v2beta_org.OrganizationSearchFilter_NameQuery:
return query.NewOrgNameSearchQuery(v2beta_object.TextMethodToQuery(q.NameQuery.Method), q.NameQuery.Name)
case *v2beta_org.OrganizationSearchFilter_StateQuery:
return query.NewOrgStateSearchQuery(OrgStateToDomain(q.StateQuery.State))
case *v2beta_org.OrganizationSearchFilter_IdQuery:
return query.NewOrgIDSearchQuery(q.IdQuery.Id)
switch q := apiQuery.Filter.(type) {
case *v2beta_org.OrganizationSearchFilter_DomainFilter:
return query.NewOrgVerifiedDomainSearchQuery(v2beta_object.TextMethodToQuery(q.DomainFilter.Method), q.DomainFilter.Domain)
case *v2beta_org.OrganizationSearchFilter_NameFilter:
return query.NewOrgNameSearchQuery(v2beta_object.TextMethodToQuery(q.NameFilter.Method), q.NameFilter.Name)
case *v2beta_org.OrganizationSearchFilter_StateFilter:
return query.NewOrgStateSearchQuery(OrgStateToDomain(q.StateFilter.State))
case *v2beta_org.OrganizationSearchFilter_IdFilter:
return query.NewOrgIDSearchQuery(q.IdFilter.Id)
default:
return nil, zerrors.ThrowInvalidArgument(nil, "ORG-vR9nC", "List.Query.Invalid")
}
@@ -159,27 +150,23 @@ func FieldNameToOrgColumn(fieldName v2beta_org.OrgFieldName) query.Column {
}
}
func OrgViewToPb(org *query.Org) *v2beta_org.Organization {
return &v2beta_org.Organization{
Id: org.ID,
State: OrgStateToPb(org.State),
Name: org.Name,
PrimaryDomain: org.Domain,
Details: v2beta_object.ToViewDetailsPb(
org.Sequence,
org.CreationDate,
org.ChangeDate,
org.ResourceOwner,
),
}
}
// func OrgViewToPb(org *query.Org) *v2beta_org.Organization {
// return &v2beta_org.Organization{
// Id: org.ID,
// State: OrgStateToPb(org.State),
// Name: org.Name,
// PrimaryDomain: org.Domain,
// CreationDate: timestamppb.New(org.CreationDate),
// ChangedDate: timestamppb.New(org.ChangeDate),
// }
// }
func ListOrgDomainsRequestToModel(systemDefaults systemdefaults.SystemDefaults, request *org.ListOrganizationDomainsRequest) (*query.OrgDomainSearchQueries, error) {
offset, limit, asc, err := filter.PaginationPbToQuery(systemDefaults, request.Pagination)
if err != nil {
return nil, err
}
queries, err := DomainQueriesToModel(request.Filter)
queries, err := DomainQueriesToModel(request.Filters)
if err != nil {
return nil, err
}
@@ -201,7 +188,7 @@ func ListQueryToModel(query *v2beta.ListQuery) (offset, limit uint64, asc bool)
return query.Offset, uint64(query.Limit), query.Asc
}
func DomainQueriesToModel(queries []*v2beta_org.DomainSearchQuery) (_ []query.SearchQuery, err error) {
func DomainQueriesToModel(queries []*v2beta_org.DomainSearchFilter) (_ []query.SearchQuery, err error) {
q := make([]query.SearchQuery, len(queries))
for i, query := range queries {
q[i], err = DomainQueryToModel(query)
@@ -212,11 +199,11 @@ func DomainQueriesToModel(queries []*v2beta_org.DomainSearchQuery) (_ []query.Se
return q, nil
}
func DomainQueryToModel(searchQuery *v2beta_org.DomainSearchQuery) (query.SearchQuery, error) {
switch q := searchQuery.Query.(type) {
case *v2beta_org.DomainSearchQuery_DomainNameQuery:
func DomainQueryToModel(searchQuery *v2beta_org.DomainSearchFilter) (query.SearchQuery, error) {
switch q := searchQuery.Filter.(type) {
case *v2beta_org.DomainSearchFilter_DomainNameFilter:
// return query.NewOrgDomainDomainSearchQuery(object.TextMethodToQuery(q.DomainNameQuery.Method), q.DomainNameQuery.Name)
return query.NewOrgDomainDomainSearchQuery(v2beta_object.TextMethodToQuery(q.DomainNameQuery.Method), q.DomainNameQuery.Name)
return query.NewOrgDomainDomainSearchQuery(v2beta_object.TextMethodToQuery(q.DomainNameFilter.Method), q.DomainNameFilter.Name)
default:
return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Ags89", "List.Query.Invalid")
}
@@ -225,7 +212,7 @@ func DomainQueryToModel(searchQuery *v2beta_org.DomainSearchQuery) (query.Search
func RemoveOrgDomainRequestToDomain(ctx context.Context, req *v2beta_org.DeleteOrganizationDomainRequest) *domain.OrgDomain {
return &domain.OrgDomain{
ObjectRoot: models.ObjectRoot{
AggregateID: req.Id,
AggregateID: req.OrganizationId,
},
Domain: req.Domain,
}

View File

@@ -92,7 +92,7 @@ func (s *Server) ListOrganizationMetadata(ctx context.Context, request *v2beta_o
return nil, err
}
return &v2beta_org.ListOrganizationMetadataResponse{
Result: metadata.OrgMetadataListToPb(res.Metadata),
Metadata: metadata.OrgMetadataListToPb(res.Metadata),
Pagination: &filter.PaginationResponse{
TotalResult: res.Count,
AppliedLimit: uint64(request.GetPagination().GetLimit()),
@@ -131,11 +131,11 @@ func (s *Server) ActivateOrganization(ctx context.Context, request *org.Activate
}
func (s *Server) AddOrganizationDomain(ctx context.Context, request *org.AddOrganizationDomainRequest) (*org.AddOrganizationDomainResponse, error) {
userIDs, err := s.getClaimedUserIDsOfOrgDomain(ctx, request.Domain, request.Id)
userIDs, err := s.getClaimedUserIDsOfOrgDomain(ctx, request.Domain, request.OrganizationId)
if err != nil {
return nil, err
}
details, err := s.command.AddOrgDomain(ctx, request.Id, request.Domain, userIDs)
details, err := s.command.AddOrgDomain(ctx, request.OrganizationId, request.Domain, userIDs)
if err != nil {
return nil, err
}
@@ -149,7 +149,7 @@ func (s *Server) ListOrganizationDomains(ctx context.Context, req *org.ListOrgan
if err != nil {
return nil, err
}
orgIDQuery, err := query.NewOrgDomainOrgIDSearchQuery(req.Id)
orgIDQuery, err := query.NewOrgDomainOrgIDSearchQuery(req.OrganizationId)
if err != nil {
return nil, err
}
@@ -160,7 +160,7 @@ func (s *Server) ListOrganizationDomains(ctx context.Context, req *org.ListOrgan
return nil, err
}
return &org.ListOrganizationDomainsResponse{
Result: object.DomainsToPb(domains.Domains),
Domains: object.DomainsToPb(domains.Domains),
Pagination: &filter.PaginationResponse{
TotalResult: domains.Count,
AppliedLimit: uint64(req.GetPagination().GetLimit()),
@@ -243,7 +243,7 @@ func createOrganizationRequestAdminToCommand(admin *v2beta_org.CreateOrganizatio
Roles: admin.GetRoles(),
}, nil
default:
return nil, zerrors.ThrowUnimplementedf(nil, "ORGv2-SD2r1", "userType oneOf %T in method AddOrganization not implemented", a)
return nil, zerrors.ThrowUnimplementedf(nil, "ORGv2-SL2r8", "userType oneOf %T in method AddOrganization not implemented", a)
}
}

View File

@@ -7,6 +7,7 @@ option go_package = "github.com/zitadel/zitadel/pkg/grpc/org/v2beta;org";
import "protoc-gen-openapiv2/options/annotations.proto";
import "validate/validate.proto";
import "zitadel/object/v2beta/object.proto";
import "google/protobuf/timestamp.proto";
message Organization {
// Unique identifier of the organization.
@@ -15,17 +16,32 @@ message Organization {
example: "\"69629023906488334\""
}
];
zitadel.object.v2beta.Details details = 2;
// The timestamp of the organization was created.
google.protobuf.Timestamp creation_date = 2 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "\"2024-12-18T07:50:47.492Z\"";
}
];
// The timestamp of the verification of the organization domain.
google.protobuf.Timestamp changed_date = 3 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "\"2025-01-23T10:34:18.051Z\"";
}
];
// Current state of the organization, for example active, inactive and deleted.
OrgState state = 3;
OrgState state = 4;
// Name of the organization.
string name = 4 [
string name = 5 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "\"ZITADEL\"";
}
];
// Primary domain used in the organization.
string primary_domain = 5 [
string primary_domain = 6 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "\"zitadel.cloud\"";
}
@@ -46,13 +62,13 @@ enum OrgFieldName {
}
message OrganizationSearchFilter{
oneof query {
oneof filter {
option (validate.required) = true;
OrgNameQuery name_query = 1;
OrgDomainQuery domain_query = 2;
OrgStateQuery state_query = 3;
OrgIDQuery id_query = 4;
OrgNameQuery name_filter = 1;
OrgDomainQuery domain_filter = 2;
OrgStateQuery state_filter = 3;
OrgIDQuery id_filter = 4;
}
}
message OrgNameQuery {
@@ -101,10 +117,10 @@ message OrgIDQuery {
}
// from proto/zitadel/org.proto
message DomainSearchQuery {
oneof query {
message DomainSearchFilter {
oneof filter {
option (validate.required) = true;
DomainNameQuery domain_name_query = 1;
DomainNameQuery domain_name_filter = 1;
}
}
@@ -126,7 +142,7 @@ message DomainNameQuery {
// from proto/zitadel/org.proto
message Domain {
// The Organization id.
string org_id = 1 [
string organization_id = 1 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "\"69629023906488334\""
}

View File

@@ -136,7 +136,7 @@ service OrganizationService {
// - `org.write`
rpc UpdateOrganization(UpdateOrganizationRequest) returns (UpdateOrganizationResponse) {
option (google.api.http) = {
put: "/v2beta/organizations"
put: "/v2beta/organizations/{id}"
body: "*"
};
@@ -155,7 +155,7 @@ service OrganizationService {
// - `iam.read`
rpc ListOrganizations(ListOrganizationsRequest) returns (ListOrganizationsResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/_search";
post: "/v2beta/organizations/search";
body: "*";
};
@@ -182,15 +182,15 @@ service OrganizationService {
// Deletes the organization and all its resources (Users, Projects, Grants to and from the org). Users of this organization will not be able to log in.
//
// Required permission:
// - `org.write`
// - `org.delete`
rpc DeleteOrganization(DeleteOrganizationRequest) returns (DeleteOrganizationResponse) {
option (google.api.http) = {
delete: "/v2beta/organizations"
delete: "/v2beta/organizations/{id}"
};
option (zitadel.protoc_gen_zitadel.v2.options) = {
auth_option: {
permission: "org.write";
permission: "org.delete";
}
};
@@ -215,7 +215,7 @@ service OrganizationService {
// - `org.write`
rpc SetOrganizationMetadata(SetOrganizationMetadataRequest) returns (SetOrganizationMetadataResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/metadata"
post: "/v2beta/organizations/{organization_id}/metadata"
body: "*"
};
@@ -234,7 +234,7 @@ service OrganizationService {
// - `org.read`
rpc ListOrganizationMetadata(ListOrganizationMetadataRequest) returns (ListOrganizationMetadataResponse ) {
option (google.api.http) = {
post: "/v2beta/organizations/metadata/_search"
post: "/v2beta/organizations/{organization_id}/metadata/search"
body: "*"
};
@@ -253,7 +253,7 @@ service OrganizationService {
// - `org.write`
rpc DeleteOrganizationMetadata(DeleteOrganizationMetadataRequest) returns (DeleteOrganizationMetadataResponse) {
option (google.api.http) = {
delete: "/v2beta/organizations/metadata"
delete: "/v2beta/organizations/{organization_id}/metadata"
};
option (zitadel.protoc_gen_zitadel.v2.options) = {
@@ -272,7 +272,7 @@ service OrganizationService {
// - `org.write`
rpc AddOrganizationDomain(AddOrganizationDomainRequest) returns (AddOrganizationDomainResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/domains"
post: "/v2beta/organizations/{organization_id}/domains"
body: "*"
};
@@ -292,7 +292,7 @@ service OrganizationService {
// - `org.read`
rpc ListOrganizationDomains(ListOrganizationDomainsRequest) returns (ListOrganizationDomainsResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/domains/_search"
post: "/v2beta/organizations/{organization_id}/domains/search"
body: "*"
};
@@ -312,7 +312,7 @@ service OrganizationService {
// - `org.write`
rpc DeleteOrganizationDomain(DeleteOrganizationDomainRequest) returns (DeleteOrganizationDomainResponse) {
option (google.api.http) = {
delete: "/v2beta/organizations/domains"
delete: "/v2beta/organizations/{organization_id}/domains"
};
option (zitadel.protoc_gen_zitadel.v2.options) = {
@@ -331,7 +331,7 @@ service OrganizationService {
// - `org.write`
rpc GenerateOrganizationDomainValidation(GenerateOrganizationDomainValidationRequest) returns (GenerateOrganizationDomainValidationResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/domains/validation/_generate"
post: "/v2beta/organizations/{organization_id}/domains/validation/generate"
body: "*"
};
@@ -351,7 +351,7 @@ service OrganizationService {
// - `org.write`
rpc VerifyOrganizationDomain(VerifyOrganizationDomainRequest) returns (VerifyOrganizationDomainResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/domains/validation/_verify"
post: "/v2beta/organizations/{organization_id}/domains/validation/verify"
body: "*"
};
@@ -371,7 +371,7 @@ service OrganizationService {
// - `org.write`
rpc DeactivateOrganization(DeactivateOrganizationRequest) returns (DeactivateOrganizationResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/deactivate"
post: "/v2beta/organizations/{id}/deactivate"
body: "*"
};
@@ -391,7 +391,7 @@ service OrganizationService {
// - `org.write`
rpc ActivateOrganization(ActivateOrganizationRequest) returns (ActivateOrganizationResponse) {
option (google.api.http) = {
post: "/v2beta/organizations/_activate"
post: "/v2beta/organizations/{id}/activate"
body: "*"
};
@@ -498,7 +498,7 @@ message ListOrganizationsRequest {
// the field the result is sorted
zitadel.org.v2beta.OrgFieldName sorting_column = 2;
// Define the criteria to query for.
// repeated ProjectRoleFilter filters = 4;
// repeated ProjectRoleQuery filters = 4;
repeated zitadel.org.v2beta.OrganizationSearchFilter filter= 3;
}
@@ -580,7 +580,7 @@ message ActivateOrganizationResponse {
message AddOrganizationDomainRequest {
// Organization Id for the Organization for which the domain is to be added to.
string id = 1 [
string organization_id = 1 [
(validate.rules).string = {min_len: 1, max_len: 200},
(google.api.field_behavior) = REQUIRED,
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
@@ -613,7 +613,7 @@ message AddOrganizationDomainResponse {
message ListOrganizationDomainsRequest {
// Organization Id for the Organization which domains are to be listed.
string id = 1 [
string organization_id = 1 [
(validate.rules).string = {min_len: 1, max_len: 200},
(google.api.field_behavior) = REQUIRED,
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
@@ -627,18 +627,19 @@ message ListOrganizationDomainsRequest {
// List limitations and ordering.
optional zitadel.filter.v2beta.PaginationRequest pagination = 2;
// Define the criteria to query for.
repeated DomainSearchQuery filter = 3;
repeated DomainSearchFilter filters = 3;
}
message ListOrganizationDomainsResponse {
// Pagination of the Organizations domain results.
zitadel.filter.v2beta.PaginationResponse pagination = 1;
repeated Domain result = 2;
// The domains requested.
repeated Domain domains = 2;
}
message DeleteOrganizationDomainRequest {
// Organization Id for the Organization which domain is to be deleted.
string id = 1 [
string organization_id = 1 [
(validate.rules).string = {min_len: 1, max_len: 200},
(google.api.field_behavior) = REQUIRED,
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
@@ -787,14 +788,14 @@ message ListOrganizationMetadataRequest {
message ListOrganizationMetadataResponse {
// Pagination of the Organizations metadata results.
zitadel.filter.v2beta.PaginationResponse pagination = 1;
// THe Organization metadata requested.
repeated zitadel.metadata.v2beta.Metadata result = 2;
// The Organization metadata requested.
repeated zitadel.metadata.v2beta.Metadata metadata = 2;
}
message DeleteOrganizationMetadataRequest {
// Organization ID of Orgalization which metadata is to be deleted is stored on.
string organization_id = 1;
// The key for the Organization metadata to be deleted.
// The keys for the Organization metadata to be deleted.
repeated string keys = 2 [(validate.rules).repeated.items.string = {min_len: 1, max_len: 200}];
}