Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
13dd123
move members poc
jmusial Feb 10, 2026
34c8d44
minor updates
jmusial Feb 10, 2026
d47b6d8
Merge branch 'main' into feat/groups-move-members
jmusial Feb 10, 2026
69e1936
Merge branch 'main' into feat/groups-move-members
jmusial Feb 20, 2026
ef0158f
update const
jmusial Feb 20, 2026
3538f07
Merge branch 'main' into feat/groups-move-members
jmusial Mar 13, 2026
192877c
Merge branch 'main' into feat/groups-move-members
jmusial Mar 17, 2026
797fb1c
rename consts
jmusial Mar 17, 2026
b95c9e2
remove redundant selector (impelmented as a part of other PR)
jmusial Mar 17, 2026
9872df5
move errors & pending actions keys
jmusial Mar 17, 2026
8d425a4
move getMemberCustomRowProps to utils
jmusial Mar 17, 2026
940dceb
refactor getMemberCustomRowProps
jmusial Mar 18, 2026
f898ad8
fix ts
jmusial Mar 18, 2026
1c04c6e
add tests
jmusial Mar 18, 2026
0114ae1
add translations
jmusial Mar 18, 2026
6fd4757
add jsdoc and guard against moving to the same group
jmusial Mar 18, 2026
0370968
Merge branch 'main' into feat/groups-move-members
jmusial Mar 18, 2026
f78b787
fix cache clearing
jmusial Mar 18, 2026
1cb95e7
optimize selectors
jmusial Mar 18, 2026
7ddbd3e
move clearing selection to a hook
jmusial Mar 18, 2026
3a6e9c7
fix lint
jmusial Mar 18, 2026
b4ec86a
remove duplicated variable
jmusial Mar 19, 2026
de19658
remove unneeded lint ignore
jmusial Mar 19, 2026
5ab351b
fix revert on failure
jmusial Mar 19, 2026
b0a3f1b
Merge branch 'main' into feat/groups-move-members
jmusial Mar 24, 2026
2fc451f
clear state on back button press
jmusial Mar 24, 2026
dbe9d32
fix list item import
jmusial Mar 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9285,6 +9285,7 @@ const CONST = {
},
BULK_ACTION_TYPES: {
CLOSE_ACCOUNT: 'closeAccount',
MOVE_TO_GROUP: 'moveToGroup',
},
},
},
Expand Down
4 changes: 4 additions & 0 deletions src/ONYXKEYS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,9 @@ const ONYXKEYS = {
/** A map of the user's security group IDs they belong to in specific domains */
MY_DOMAIN_SECURITY_GROUPS: 'myDomainSecurityGroups',

/** Selected domain member account IDs for the move-to-group operation */
DOMAIN_MEMBERS_SELECTED_FOR_MOVE: 'domainMembersSelectedForMove',

// The theme setting set by the user in preferences.
// This can be either "light", "dark" or "system"
PREFERRED_THEME: 'nvp_preferredTheme',
Expand Down Expand Up @@ -1371,6 +1374,7 @@ type OnyxValuesMapping = {
[ONYXKEYS.IS_BETA]: boolean;
[ONYXKEYS.IS_CHECKING_PUBLIC_ROOM]: boolean;
[ONYXKEYS.MY_DOMAIN_SECURITY_GROUPS]: Record<string, string>;
[ONYXKEYS.DOMAIN_MEMBERS_SELECTED_FOR_MOVE]: string[];
[ONYXKEYS.VERIFY_3DS_SUBSCRIPTION]: string;
[ONYXKEYS.PREFERRED_THEME]: ValueOf<typeof CONST.THEME>;
[ONYXKEYS.MAPBOX_ACCESS_TOKEN]: OnyxTypes.MapboxAccessToken;
Expand Down
4 changes: 4 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4011,6 +4011,10 @@ const ROUTES = {
route: 'domain/:domainAccountID/members/:accountID/reset-two-factor-auth',
getRoute: (domainAccountID: number, accountID: number) => `domain/${domainAccountID}/members/${accountID}/reset-two-factor-auth` as const,
},
DOMAIN_MEMBERS_MOVE_TO_GROUP: {
route: 'domain/:domainAccountID/members/move',
getRoute: (domainAccountID: number) => `domain/${domainAccountID}/members/move` as const,
},

MULTIFACTOR_AUTHENTICATION_MAGIC_CODE: `multifactor-authentication/magic-code`,
MULTIFACTOR_AUTHENTICATION_BIOMETRICS_TEST: 'multifactor-authentication/scenario/biometrics-test',
Expand Down
1 change: 1 addition & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -964,6 +964,7 @@ const SCREENS = {
MEMBER_RESET_TWO_FACTOR_AUTH: 'Member_Reset_Two_Factor_Auth',
MEMBER_FORCE_TWO_FACTOR_AUTH: 'Member_Force_Two_Factor_Auth',
MEMBER_LOCK_ACCOUNT: 'Member_Lock_Account',
MEMBERS_MOVE_TO_GROUP: 'Members_Move_To_Group',
},
MULTIFACTOR_AUTHENTICATION: {
MAGIC_CODE: 'Multifactor_Authentication_Magic_Code',
Expand Down
28 changes: 28 additions & 0 deletions src/hooks/useClearSelectedDomainMembersOnMoveComplete.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import {useEffect} from 'react';
import ONYXKEYS from '@src/ONYXKEYS';
import useOnyx from './useOnyx';
import usePrevious from './usePrevious';

/**
* Clears local member selection after move flow completion by reacting to a
* transition of `DOMAIN_MEMBERS_SELECTED_FOR_MOVE` from non-empty to empty.
*/
function useClearSelectedDomainMembersOnMoveComplete(clearSelectedMembers: () => void) {
const [selectedMemberAccountIDs] = useOnyx(ONYXKEYS.DOMAIN_MEMBERS_SELECTED_FOR_MOVE, {initWithStoredValues: false});
const prevSelectedMemberAccountIDs = usePrevious(selectedMemberAccountIDs);
const selectedCount = selectedMemberAccountIDs?.length ?? 0;
const previousSelectedCount = prevSelectedMemberAccountIDs?.length ?? 0;

useEffect(() => {
const hadSelectionBefore = previousSelectedCount > 0;
const hasNoSelectionNow = selectedCount === 0;

if (!hadSelectionBefore || !hasNoSelectionNow) {
return;
}

clearSelectedMembers();
}, [selectedCount, previousSelectedCount, clearSelectedMembers]);
}

export default useClearSelectedDomainMembersOnMoveComplete;
3 changes: 3 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8696,12 +8696,15 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`,
removeMember: 'Dieser Benutzer kann nicht entfernt werden. Bitte versuche es erneut.',
addMember: 'Dieses Mitglied kann nicht hinzugefügt werden. Bitte versuche es erneut.',
vacationDelegate: 'Dieser Benutzer kann nicht als Urlaubsvertretung festgelegt werden. Bitte versuche es erneut.',
moveMember: 'Dieses Mitglied kann nicht verschoben werden. Bitte versuchen Sie es erneut.',
},
reportSuspiciousActivityPrompt: (email: string) =>
`Bist du sicher? Dadurch wird das Konto von <strong>${email}</strong> gesperrt. <br /><br /> Unser Team wird das Konto anschließend überprüfen und unbefugten Zugriff entfernen. Um den Zugriff wiederherzustellen, muss die Person mit Concierge zusammenarbeiten.`,
reportSuspiciousActivityConfirmationPrompt: 'Wir überprüfen das Konto, um sicherzustellen, dass es sicher entsperrt werden kann, und melden uns bei Fragen über Concierge.',
cannotSetVacationDelegateForMember: (email: string) => `Du kannst keine Urlaubsvertretung für ${email} festlegen, weil sie derzeit die Vertretung für folgende Mitglieder sind:`,
emptyMembers: {title: 'Keine Mitglieder in dieser Gruppe', subtitle: 'Fügen Sie ein Mitglied hinzu oder versuchen Sie, den Filter oben zu ändern.'},
moveToGroup: 'In Gruppe verschieben',
chooseWhereToMove: ({count}: {count: number}) => `Wählen Sie aus, wohin Sie ${count} ${count === 1 ? 'Mitglied' : 'Mitglieder'} verschieben möchten.`,
},
common: {
settings: 'Einstellungen',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8680,9 +8680,12 @@ const translations = {
one: 'Close account',
other: 'Close accounts',
}),
moveToGroup: 'Move to group',
chooseWhereToMove: ({count}: {count: number}) => `Choose where to move ${count} ${count === 1 ? 'member' : 'members'}.`,
error: {
addMember: 'Unable to add this member. Please try again.',
removeMember: 'Unable to remove this user. Please try again.',
moveMember: 'Unable to move this member. Please try again.',
vacationDelegate: 'Unable to set this user as a vacation delegate. Please try again.',
},
cannotSetVacationDelegateForMember: (email: string) => `You can't set a vacation delegate for ${email} because they're currently the delegate for the following members:`,
Expand Down
3 changes: 3 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8966,6 +8966,7 @@ ${amount} para ${merchant} - ${date}`,
removeMember: 'No se pudo eliminar a este usuario. Por favor, inténtalo de nuevo.',
addMember: 'No se pudo añadir este miembro. Por favor, inténtalo de nuevo.',
vacationDelegate: 'No se pudo establecer a este usuario como delegado de vacaciones. Por favor, inténtalo de nuevo.',
moveMember: 'No se pudo mover este miembro. Por favor, inténtalo de nuevo.',
},
cannotSetVacationDelegateForMember: (email: string) =>
`No puedes establecer un delegado de vacaciones para ${email} porque actualmente es el delegado de los siguientes miembros:`,
Expand All @@ -8974,6 +8975,8 @@ ${amount} para ${merchant} - ${date}`,
`¿Estás seguro? Esto bloqueará la cuenta de <strong>${email}</strong>. <br /><br /> Nuestro equipo revisará la cuenta y eliminará cualquier acceso no autorizado. Para recuperar el acceso, deberá comunicarse con Concierge.`,
reportSuspiciousActivityConfirmationPrompt:
'Revisaremos la cuenta para verificar que sea seguro desbloquearla y nos comunicaremos a través de Concierge si tenemos alguna pregunta.',
moveToGroup: 'Mover al grupo',
chooseWhereToMove: ({count}: {count: number}) => `Elige a dónde mover ${count} ${count === 1 ? 'miembro' : 'miembros'}.`,
},
common: {
settings: 'Configuración',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8719,6 +8719,7 @@ Voici un *reçu test* pour vous montrer comment ça fonctionne :`,
removeMember: 'Impossible de supprimer cet utilisateur. Veuillez réessayer.',
addMember: 'Impossible d’ajouter ce membre. Veuillez réessayer.',
vacationDelegate: 'Impossible de définir cet utilisateur comme délégué de vacances. Veuillez réessayer.',
moveMember: 'Impossible de déplacer ce membre. Veuillez réessayer.',
},
cannotSetVacationDelegateForMember: (email: string) =>
`Vous ne pouvez pas définir un délégué de vacances pour ${email}, car cette personne est actuellement le délégué des membres suivants :`,
Expand All @@ -8727,6 +8728,8 @@ Voici un *reçu test* pour vous montrer comment ça fonctionne :`,
reportSuspiciousActivityConfirmationPrompt:
'Nous examinerons le compte pour vérifier qu’il est sûr de le déverrouiller et nous vous contacterons via Concierge si nous avons des questions.',
emptyMembers: {title: 'Aucun membre dans ce groupe', subtitle: 'Ajoutez un membre ou essayez de modifier le filtre ci-dessus.'},
moveToGroup: 'Déplacer vers le groupe',
chooseWhereToMove: ({count}: {count: number}) => `Choisissez où déplacer ${count} ${count === 1 ? 'membre' : 'membres'}.`,
},
common: {
settings: 'Paramètres',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8685,12 +8685,15 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`,
removeMember: 'Impossibile rimuovere questo utente. Riprova.',
addMember: 'Impossibile aggiungere questo membro. Riprova.',
vacationDelegate: 'Impossibile impostare questo utente come delegato per le ferie. Riprova.',
moveMember: 'Impossibile spostare questo membro. Riprova.',
},
cannotSetVacationDelegateForMember: (email: string) => `Non puoi impostare un delegato per le vacanze per ${email} perché al momento è il delegato per i seguenti membri:`,
reportSuspiciousActivityPrompt: (email: string) =>
`Sei sicuro? Questo bloccherà l’account di <strong>${email}</strong>. <br /><br /> Il nostro team esaminerà quindi l’account e rimuoverà qualsiasi accesso non autorizzato. Per riottenere l’accesso, dovranno collaborare con Concierge.`,
reportSuspiciousActivityConfirmationPrompt: 'Esamineremo l’account per verificare che sia sicuro sbloccarlo e ti contatteremo tramite Concierge per qualsiasi domanda.',
emptyMembers: {title: 'Nessun membro in questo gruppo', subtitle: 'Aggiungi un membro o prova a cambiare il filtro qui sopra.'},
moveToGroup: 'Sposta nel gruppo',
chooseWhereToMove: ({count}: {count: number}) => `Scegli dove spostare ${count} ${count === 1 ? 'membro' : 'membri'}.`,
},
common: {
settings: 'Impostazioni',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8576,12 +8576,15 @@ ${reportName}
removeMember: 'このユーザーを削除できません。もう一度お試しください。',
addMember: 'このメンバーを追加できませんでした。もう一度お試しください。',
vacationDelegate: 'このユーザーを休暇代理人として設定できませんでした。もう一度お試しください。',
moveMember: 'このメンバーを移動できませんでした。もう一度お試しください。',
},
cannotSetVacationDelegateForMember: (email: string) => `${email} に休暇代理人を設定できません。現在、このユーザーは次のメンバーの代理人になっています。`,
reportSuspiciousActivityPrompt: (email: string) =>
`本当によろしいですか?これにより、<strong>${email}</strong> さんのアカウントがロックされます。<br /><br />その後、当社のチームがアカウントを確認し、不正アクセスを削除します。アクセスを回復するには、Concierge と連携して対応してもらう必要があります。`,
reportSuspiciousActivityConfirmationPrompt: 'アカウントが安全にロック解除できることを確認するために審査し、質問がある場合はConciergeを通じてご連絡します。',
emptyMembers: {title: 'このグループにはメンバーがいません', subtitle: 'メンバーを追加するか、上のフィルターを変更してみてください。'},
moveToGroup: 'グループへ移動',
chooseWhereToMove: ({count}: {count: number}) => `${count} ${count === 1 ? 'メンバー' : 'メンバー'} を移動する先を選択してください。`,
},
common: {
settings: '設定',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8659,6 +8659,7 @@ Hier is een *proefbon* om je te laten zien hoe het werkt:`,
removeMember: 'Kan deze gebruiker niet verwijderen. Probeer het opnieuw.',
addMember: 'Kan dit lid niet toevoegen. Probeer het opnieuw.',
vacationDelegate: 'Kan deze gebruiker niet als vakantiemandataris instellen. Probeer het opnieuw.',
moveMember: 'Kan dit lid niet verplaatsen. Probeer het opnieuw.',
},
cannotSetVacationDelegateForMember: (email: string) =>
`Je kunt geen vakantiemandataris instellen voor ${email} omdat die persoon momenteel gedelegeerde is voor de volgende leden:`,
Expand All @@ -8667,6 +8668,8 @@ Hier is een *proefbon* om je te laten zien hoe het werkt:`,
reportSuspiciousActivityConfirmationPrompt:
'We beoordelen de account om te verifiëren dat het veilig is om deze te ontgrendelen en nemen via Concierge contact op als we vragen hebben.',
emptyMembers: {title: 'Geen leden in deze groep', subtitle: 'Voeg een lid toe of probeer het filter hierboven te wijzigen.'},
moveToGroup: 'Verplaatsen naar groep',
chooseWhereToMove: ({count}: {count: number}) => `Kies waar je ${count} ${count === 1 ? 'lid' : 'leden'} naartoe wilt verplaatsen.`,
},
common: {
settings: 'Instellingen',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8641,12 +8641,15 @@ Oto *paragon testowy*, żeby pokazać Ci, jak to działa:`,
removeMember: 'Nie można usunąć tego użytkownika. Spróbuj ponownie.',
addMember: 'Nie można dodać tego członka. Spróbuj ponownie.',
vacationDelegate: 'Nie można ustawić tego użytkownika jako zastępującego na czas nieobecności. Spróbuj ponownie.',
moveMember: 'Nie można przenieść tego członka. Spróbuj ponownie.',
},
cannotSetVacationDelegateForMember: (email: string) => `Nie możesz ustawić zastępstwa urlopowego dla ${email}, ponieważ jest on/ona obecnie zastępcą dla następujących członków:`,
reportSuspiciousActivityPrompt: (email: string) =>
`Czy na pewno? To zablokuje konto użytkownika <strong>${email}</strong>. <br /><br /> Nasz zespół następnie przejrzy konto i usunie wszelki nieautoryzowany dostęp. Aby odzyskać dostęp, będą musieli współpracować z Concierge.`,
reportSuspiciousActivityConfirmationPrompt: 'Przejrzymy konto, aby potwierdzić, że bezpiecznie je odblokować, i skontaktujemy się przez Concierge w razie pytań.',
emptyMembers: {title: 'Brak członków w tej grupie', subtitle: 'Dodaj członka lub spróbuj zmienić filtr powyżej.'},
moveToGroup: 'Przenieś do grupy',
chooseWhereToMove: ({count}: {count: number}) => `Wybierz, dokąd przenieść ${count} ${count === 1 ? 'członek' : 'członkowie'}.`,
},
common: {
settings: 'Ustawienia',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8650,12 +8650,15 @@ Aqui está um *comprovante de teste* para mostrar como funciona:`,
removeMember: 'Não foi possível remover este usuário. Tente novamente.',
addMember: 'Não foi possível adicionar este membro. Tente novamente.',
vacationDelegate: 'Não foi possível definir este usuário como delegado de férias. Tente novamente.',
moveMember: 'Não foi possível mover este membro. Tente novamente.',
},
cannotSetVacationDelegateForMember: (email: string) => `Você não pode definir um procurador de férias para ${email} porque esta pessoa já é procuradora dos seguintes membros:`,
reportSuspiciousActivityPrompt: (email: string) =>
`Tem certeza? Isso irá bloquear a conta de <strong>${email}</strong>. <br /><br /> Nossa equipe irá então analisar a conta e remover qualquer acesso não autorizado. Para recuperar o acesso, será necessário que trabalhem com a Concierge.`,
reportSuspiciousActivityConfirmationPrompt: 'Vamos revisar a conta para verificar se é seguro desbloqueá-la e entraremos em contato via Concierge caso haja dúvidas.',
emptyMembers: {title: 'Nenhum membro neste grupo', subtitle: 'Adicione um membro ou tente mudar o filtro acima.'},
moveToGroup: 'Mover para grupo',
chooseWhereToMove: ({count}: {count: number}) => `Escolha para onde mover ${count} ${count === 1 ? 'membro' : 'membros'}.`,
},
common: {
settings: 'Configurações',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8423,12 +8423,15 @@ ${reportName}
removeMember: '无法移除此用户。请重试。',
addMember: '无法添加此成员。请重试。',
vacationDelegate: '无法将此用户设置为休假代理人。请重试。',
moveMember: '无法移动此成员。请重试。',
},
cannotSetVacationDelegateForMember: (email: string) => `您无法为 ${email} 设置休假代理人,因为 TA 当前是以下成员的代理人:`,
reportSuspiciousActivityPrompt: (email: string) =>
`你确定要这样做吗?这将锁定 <strong>${email}</strong> 的账户。<br /><br />我们的团队随后会审核该账户并移除任何未经授权的访问。若要重新获得访问权限,他们需要与 Concierge 配合处理。`,
reportSuspiciousActivityConfirmationPrompt: '我们会审核账户以确认解锁是否安全,如有任何问题将通过 Concierge 与您联系。',
emptyMembers: {title: '此群组中没有成员', subtitle: '添加成员或尝试更改上方的筛选条件。'},
moveToGroup: '移至群组',
chooseWhereToMove: ({count}: {count: number}) => `选择将 ${count} 个 ${count === 1 ? '成员' : '成员'} 移动到哪里。`,
},
common: {
settings: '设置',
Expand Down
8 changes: 8 additions & 0 deletions src/libs/API/parameters/ChangeDomainSecurityGroupParams.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
type ChangeDomainSecurityGroupParams = {
domainName: string;
newID: string;
employeeEmail: string;
domainAccountID: number;
};

export default ChangeDomainSecurityGroupParams;
1 change: 1 addition & 0 deletions src/libs/API/parameters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ export type {default as SetTechnicalContactEmailParams} from './SetTechnicalCont
export type {default as ToggleConsolidatedDomainBillingParams} from './ToggleConsolidatedDomainBillingParams';
export type {default as RemoveDomainAdminParams} from './RemoveDomainAdminParams';
export type {default as DeleteDomainMemberParams} from './DeleteDomainMemberParams';
export type {default as ChangeDomainSecurityGroupParams} from './ChangeDomainSecurityGroupParams';
export type {default as DeleteDomainParams} from './DeleteDomainParams';
export type {default as GetDuplicateTransactionDetailsParams} from './GetDuplicateTransactionDetailsParams';
export type {default as SetPolicyCategoryReceiptsAndItemizedReceiptRequiredParams} from './SetPolicyCategoryReceiptsAndItemizedReceiptRequiredParams';
Expand Down
2 changes: 2 additions & 0 deletions src/libs/API/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,7 @@ const WRITE_COMMANDS = {
SET_TWO_FACTOR_AUTH_EXEMPT_EMAIL_FOR_DOMAIN: 'SetTwoFactorAuthExemptEmailForDomain',
RESET_DOMAIN_MEMBER_TWO_FACTOR_AUTH: 'ResetDomainMemberTwoFactorAuth',
EXPORT_DOMAIN_MEMBERS_CSV: 'ExportDomainMembersCSV',
CHANGE_DOMAIN_SECURITY_GROUP: 'ChangeDomainSecurityGroup',
} as const;

type WriteCommand = ValueOf<typeof WRITE_COMMANDS>;
Expand Down Expand Up @@ -1153,6 +1154,7 @@ type WriteCommandParameters = {
[WRITE_COMMANDS.SET_TWO_FACTOR_AUTH_EXEMPT_EMAIL_FOR_DOMAIN]: Parameters.SetTwoFactorAuthExemptEmailForDomainParams;
[WRITE_COMMANDS.RESET_DOMAIN_MEMBER_TWO_FACTOR_AUTH]: Parameters.ResetDomainMemberTwoFactorAuthParams;
[WRITE_COMMANDS.EXPORT_DOMAIN_MEMBERS_CSV]: Parameters.ExportDomainMembersCSVParams;
[WRITE_COMMANDS.CHANGE_DOMAIN_SECURITY_GROUP]: Parameters.ChangeDomainSecurityGroupParams;
};

const READ_COMMANDS = {
Expand Down
Loading
Loading