Merge branch 'IDTEAM-1.26.0' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / api / organization.ts
blob6326096ba490ac2ba4d25a48e1666ca6bad8eb52
1 export const getOrganization = () => ({
2     url: 'core/v4/organizations',
3     method: 'get',
4 });
6 export const getOrganizationIdentity = () => ({
7     url: 'core/v4/organizations/keys/signature',
8     method: 'get',
9 });
11 export const getOrganizationKeys = () => ({
12     url: 'core/v4/organizations/keys',
13     method: 'get',
14 });
16 export const getOrganizationBackupKeys = () => ({
17     url: 'core/v4/organizations/keys/backup',
18     method: 'get',
19 });
21 export const getOrganizationLogo = (id: string) => ({
22     url: `core/v4/organizations/logo/${id}`,
23     method: 'get',
24 });
26 export const updateOrganizationName = (Name: string) => ({
27     url: 'core/v4/organizations/name',
28     method: 'put',
29     data: { Name },
30 });
32 export const updateOrganizationLogo = (Image: string) => ({
33     url: 'core/v4/organizations/settings/logo',
34     method: 'post',
35     data: { Image },
36 });
38 export const deleteOrganizationLogo = () => ({
39     url: 'core/v4/organizations/settings/logo',
40     method: 'delete',
41 });
43 export const updateOrganizationSettings = ({
44     ShowName,
45     ShowScribeWritingAssistant,
46     VideoConferencingEnabled,
47 }: {
48     ShowName?: boolean;
49     ShowScribeWritingAssistant?: boolean;
50     VideoConferencingEnabled?: boolean;
51 }) => ({
52     url: 'core/v4/organizations/settings',
53     method: 'put',
54     data: { ShowName, ShowScribeWritingAssistant, VideoConferencingEnabled },
55 });
57 export const getOrganizationSettings = () => ({
58     url: 'core/v4/organizations/settings',
59     method: 'get',
60 });
62 export const updateOrganizationEmail = (Email: string) => ({
63     url: 'core/v4/organizations/email',
64     method: 'put',
65     data: { Email },
66 });
68 export const updateOrganizationTheme = (Theme: string) => ({
69     url: 'core/v4/organizations/theme',
70     method: 'put',
71     data: { Theme },
72 });
74 export const updateTwoFactor = (GracePeriod: number) => ({
75     url: 'core/v4/organizations/2fa',
76     method: 'put',
77     data: { GracePeriod },
78 });
80 export interface UpdateOrganizationKeysPayloadLegacy {
81     PrivateKey: string;
82     BackupPrivateKey: string;
83     BackupKeySalt: string;
84     Tokens: { ID: string; Token: string }[];
87 export const updateOrganizationKeysLegacy = ({
88     PrivateKey,
89     BackupPrivateKey,
90     BackupKeySalt,
91     Tokens,
92 }: UpdateOrganizationKeysPayloadLegacy) => ({
93     url: 'core/v4/organizations/keys',
94     method: 'post',
95     data: { PrivateKey, BackupPrivateKey, BackupKeySalt, Tokens },
96 });
98 interface Members {
99     ID: string;
100     UserKeyTokens: {
101         ID: string;
102         Token: string;
103     }[];
104     AddressKeyTokens: {
105         ID: string;
106         Token: string;
107         Signature: string;
108         OrgSignature: string;
109     }[];
112 export interface UpdatePasswordlessOrganizationKeysPayload {
113     PrivateKey: string;
114     Signature: string;
115     Token: string;
116     Members: Members[];
117     AdminInvitations: {
118         MemberID: string;
119         TokenKeyPacket: string;
120         Signature: string;
121         SignatureAddressID: string;
122         EncryptionAddressID: string;
123     }[];
124     AdminActivations: {
125         MemberID: string;
126         TokenKeyPacket: string;
127         Signature: string;
128     }[];
131 export const createPasswordlessOrganizationKeys = (data: UpdatePasswordlessOrganizationKeysPayload) => ({
132     url: 'core/v4/organizations/keys',
133     method: 'post',
134     data,
137 export const updatePasswordlessOrganizationKeys = (data: UpdatePasswordlessOrganizationKeysPayload) => ({
138     ...createPasswordlessOrganizationKeys(data),
139     method: 'put',
142 interface MigratePasswordlessOrganizationKeysPayload
143     extends Omit<UpdatePasswordlessOrganizationKeysPayload, 'Members' | 'AdminInvitations'> {
144     AdminInvitations: {
145         MemberID: string;
146         TokenKeyPacket: string;
147         Signature: string;
148     }[];
151 export const migratePasswordlessOrganizationKey = (data: MigratePasswordlessOrganizationKeysPayload) => ({
152     url: 'core/v4/organizations/keys/migrate',
153     method: 'post',
154     data,
157 export interface UpdateOrganizationKeysPayloadV2 {
158     PrivateKey: string;
159     BackupPrivateKey: string;
160     BackupKeySalt: string;
161     Members: Members[];
164 export const updateOrganizationKeysV2 = ({
165     PrivateKey,
166     BackupPrivateKey,
167     BackupKeySalt,
168     Members,
169 }: UpdateOrganizationKeysPayloadV2) => ({
170     url: 'core/v4/organizations/keys',
171     method: 'post',
172     data: { PrivateKey, BackupPrivateKey, BackupKeySalt, Members },
175 export const updateBackupKey = ({ PrivateKey, KeySalt }: { PrivateKey: string; KeySalt: string }) => ({
176     url: 'core/v4/organizations/keys/backup',
177     method: 'post',
178     data: { PrivateKey, KeySalt },
181 export const activateOrganizationKey = (PrivateKey: string) => ({
182     url: 'core/v4/organizations/keys/activate',
183     method: 'put',
184     data: { PrivateKey },
187 export const uploadOrganizationKeySignature = (data: { AddressID: string; Signature: string }) => ({
188     url: 'core/v4/organizations/keys/signature',
189     method: 'put',
190     data,
193 export const leaveOrganisation = () => ({
194     url: 'core/v4/organizations/membership',
195     method: 'delete',
198 export const queryEnforceTwoFA = (Require: number) => ({
199     url: `core/v4/organizations/require2fa`,
200     method: 'put',
201     data: { Require },
204 export const queryRemoveTwoFA = () => ({
205     url: `core/v4/organizations/require2fa`,
206     method: 'delete',
209 export const sendEmailReminderTwoFA = () => ({
210     url: 'core/v4/organizations/2fa/remind',
211     method: 'post',