improvement: add bulk delete org members endpoint and table support

This commit is contained in:
Scott Wilson
2025-07-29 16:42:13 -07:00
parent 00e382d774
commit 4f00fc6777
15 changed files with 835 additions and 303 deletions
+21 -3
View File
@@ -17,7 +17,8 @@ import {
APIKeyData,
AuthMethod,
CreateAPIKeyRes,
DeletOrgMembershipDTO,
DeleteOrgMembershipBatchDTO,
DeleteOrgMembershipDTO,
OrgUser,
RenameUserDTO,
TokenVersion,
@@ -243,7 +244,7 @@ export const useGetOrgMembershipProjectMemberships = (
export const useDeleteOrgMembership = () => {
const queryClient = useQueryClient();
return useMutation<object, object, DeletOrgMembershipDTO>({
return useMutation<object, object, DeleteOrgMembershipDTO>({
mutationFn: ({ membershipId, orgId }) => {
return apiRequest.delete(`/api/v2/organizations/${orgId}/memberships/${membershipId}`);
},
@@ -253,10 +254,27 @@ export const useDeleteOrgMembership = () => {
});
};
export const useDeleteOrgMembershipBatch = () => {
const queryClient = useQueryClient();
return useMutation<object, object, DeleteOrgMembershipBatchDTO>({
mutationFn: ({ membershipIds, orgId }) => {
return apiRequest.delete(`/api/v2/organizations/${orgId}/memberships`, {
data: {
membershipIds
}
});
},
onSuccess: (_, { orgId }) => {
queryClient.invalidateQueries({ queryKey: userKeys.getOrgUsers(orgId) });
}
});
};
export const useDeactivateOrgMembership = () => {
const queryClient = useQueryClient();
return useMutation<object, object, DeletOrgMembershipDTO>({
return useMutation<object, object, DeleteOrgMembershipDTO>({
mutationFn: ({ membershipId, orgId }) => {
return apiRequest.post(
`/api/v2/organizations/${orgId}/memberships/${membershipId}/deactivate`
+6 -1
View File
@@ -143,11 +143,16 @@ export type UpdateOrgMembershipDTO = {
metadata?: { key: string; value: string }[];
};
export type DeletOrgMembershipDTO = {
export type DeleteOrgMembershipDTO = {
membershipId: string;
orgId: string;
};
export type DeleteOrgMembershipBatchDTO = {
membershipIds: string[];
orgId: string;
};
export type AddUserToOrgDTO = {
inviteeEmails: string[];
organizationRoleSlug: string;