@@ -14,6 +14,7 @@ import {
1414 createPermissionGroupBodySchema ,
1515 updatePermissionGroupBodySchema ,
1616} from '@/lib/api/contracts/permission-groups'
17+ import { v2BulkAddPermissionGroupMembersBodySchema } from '@/lib/api/contracts/v2/permission-groups'
1718import { updateWorkspacePermissionsBodySchema } from '@/lib/api/contracts/workspaces'
1819import { getOrganizationUsageBreakdown } from '@/lib/billing/application/organization-usage/get-organization-usage-breakdown'
1920import { getOrganizationUsageSummary } from '@/lib/billing/application/organization-usage/get-organization-usage-summary'
@@ -77,12 +78,15 @@ import {
7778 settingsWorkspaceId ,
7879} from '@/lib/mothership/tools/server/settings-operation'
7980import { organizationDomainSettingsActions } from '@/lib/mothership/tools/server/settings-security'
81+ import { simLinkSettingsActions } from '@/lib/mothership/tools/server/settings-sim-links'
8082import {
83+ previewOrganizationMemberRemoval ,
8184 removeOrganizationMember ,
8285 updateOrganizationMember ,
8386} from '@/lib/organizations/application/members'
8487import {
8588 addPermissionGroupMember ,
89+ bulkAddPermissionGroupMembers ,
8690 createPermissionGroup ,
8791 deletePermissionGroup ,
8892 getPermissionGroup ,
@@ -370,6 +374,22 @@ export const settingsOperations: Record<string, Record<string, SettingsOperation
370374 ) . member ,
371375 } )
372376 ) ,
377+ bulk_add_members : settingsOperation (
378+ 'write' ,
379+ z . strictObject ( {
380+ groupId : z . string ( ) . min ( 1 ) ,
381+ userIds : v2BulkAddPermissionGroupMembersBodySchema . shape . userIds ,
382+ addAllOrganizationMembers :
383+ v2BulkAddPermissionGroupMembersBodySchema . shape . addAllOrganizationMembers ,
384+ } ) ,
385+ async ( context , input ) => {
386+ const { added, skipped } = await bulkAddPermissionGroupMembers . execute ( {
387+ principal : context . principal ,
388+ input : { ...input , organizationId : settingsOrganizationId ( context ) } ,
389+ } )
390+ return { added, skipped }
391+ }
392+ ) ,
373393 remove_member : settingsOperation (
374394 'write' ,
375395 z . strictObject ( { groupId : z . string ( ) . min ( 1 ) , memberId : z . string ( ) . min ( 1 ) } ) ,
@@ -412,6 +432,15 @@ export const settingsOperations: Record<string, Record<string, SettingsOperation
412432 input : { ...input , organizationId : settingsOrganizationId ( context ) } ,
413433 } )
414434 ) ,
435+ removal_impact : settingsOperation (
436+ 'read' ,
437+ z . strictObject ( { userId : z . string ( ) . min ( 1 ) . max ( 200 ) } ) ,
438+ ( context , input ) =>
439+ previewOrganizationMemberRemoval . execute ( {
440+ principal : context . principal ,
441+ input : { ...input , organizationId : settingsOrganizationId ( context ) } ,
442+ } )
443+ ) ,
415444 remove : settingsOperation (
416445 'write' ,
417446 z . strictObject ( { userId : z . string ( ) . min ( 1 ) } ) ,
@@ -443,6 +472,7 @@ export const settingsOperations: Record<string, Record<string, SettingsOperation
443472 } )
444473 ) ,
445474 } ,
475+ 'organization/sim-links' : simLinkSettingsActions ,
446476 'organization/usage' : {
447477 summary : settingsOperation (
448478 'read' ,
0 commit comments