Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / api / organization.ts
blob7ad5a7915a5965de6504a6ded6aebeeca720c036
1 export const getOrganization = () => ({
2     url: 'core/v4/organizations',
3     method: 'get',
4 });
6 export const getOrganizationKeys = () => ({
7     url: 'core/v4/organizations/keys',
8     method: 'get',
9 });
11 export const getOrganizationBackupKeys = () => ({
12     url: 'core/v4/organizations/keys/backup',
13     method: 'get',
14 });
16 export const getOrganizationLogo = (id: string) => ({
17     url: `core/v4/organizations/logo/${id}`,
18     method: 'get',
19 });
21 export const updateOrganizationName = (Name: string) => ({
22     url: 'core/v4/organizations/name',
23     method: 'put',
24     data: { Name },
25 });
27 export const updateOrganizationLogo = (Image: string) => ({
28     url: 'core/v4/organizations/settings/logo',
29     method: 'post',
30     data: { Image },
31 });
33 export const deleteOrganizationLogo = () => ({
34     url: 'core/v4/organizations/settings/logo',
35     method: 'delete',
36 });
38 export const updateOrganizationSettings = ({ ShowName }: { ShowName: boolean }) => ({
39     url: 'core/v4/organizations/settings',
40     method: 'put',
41     data: { ShowName },
42 });
44 export const getOrganizationSettings = () => ({
45     url: 'core/v4/organizations/settings',
46     method: 'get',
47 });
49 export const updateOrganizationEmail = (Email: string) => ({
50     url: 'core/v4/organizations/email',
51     method: 'put',
52     data: { Email },
53 });
55 export const updateOrganizationTheme = (Theme: string) => ({
56     url: 'core/v4/organizations/theme',
57     method: 'put',
58     data: { Theme },
59 });
61 export const updateTwoFactor = (GracePeriod: number) => ({
62     url: 'core/v4/organizations/2fa',
63     method: 'put',
64     data: { GracePeriod },
65 });
67 export interface UpdateOrganizationKeysPayloadLegacy {
68     PrivateKey: string;
69     BackupPrivateKey: string;
70     BackupKeySalt: string;
71     Tokens: { ID: string; Token: string }[];
74 export const updateOrganizationKeysLegacy = ({
75     PrivateKey,
76     BackupPrivateKey,
77     BackupKeySalt,
78     Tokens,
79 }: UpdateOrganizationKeysPayloadLegacy) => ({
80     url: 'core/v4/organizations/keys',
81     method: 'post',
82     data: { PrivateKey, BackupPrivateKey, BackupKeySalt, Tokens },
83 });
85 interface Members {
86     ID: string;
87     UserKeyTokens: {
88         ID: string;
89         Token: string;
90     }[];
91     AddressKeyTokens: {
92         ID: string;
93         Token: string;
94         Signature: string;
95         OrgSignature: string;
96     }[];
99 export interface UpdatePasswordlessOrganizationKeysPayload {
100     PrivateKey: string;
101     Signature: string;
102     Token: string;
103     Members: Members[];
104     AdminInvitations: {
105         MemberID: string;
106         TokenKeyPacket: string;
107         Signature: string;
108         SignatureAddressID: string;
109         EncryptionAddressID: string;
110     }[];
111     AdminActivations: {
112         MemberID: string;
113         TokenKeyPacket: string;
114         Signature: string;
115     }[];
118 export const createPasswordlessOrganizationKeys = (data: UpdatePasswordlessOrganizationKeysPayload) => ({
119     url: 'core/v4/organizations/keys',
120     method: 'post',
121     data,
124 export const updatePasswordlessOrganizationKeys = (data: UpdatePasswordlessOrganizationKeysPayload) => ({
125     ...createPasswordlessOrganizationKeys(data),
126     method: 'put',
129 interface MigratePasswordlessOrganizationKeysPayload
130     extends Omit<UpdatePasswordlessOrganizationKeysPayload, 'Members' | 'AdminInvitations'> {
131     AdminInvitations: {
132         MemberID: string;
133         TokenKeyPacket: string;
134         Signature: string;
135     }[];
138 export const migratePasswordlessOrganizationKey = (data: MigratePasswordlessOrganizationKeysPayload) => ({
139     url: 'core/v4/organizations/keys/migrate',
140     method: 'post',
141     data,
144 export interface UpdateOrganizationKeysPayloadV2 {
145     PrivateKey: string;
146     BackupPrivateKey: string;
147     BackupKeySalt: string;
148     Members: Members[];
151 export const updateOrganizationKeysV2 = ({
152     PrivateKey,
153     BackupPrivateKey,
154     BackupKeySalt,
155     Members,
156 }: UpdateOrganizationKeysPayloadV2) => ({
157     url: 'core/v4/organizations/keys',
158     method: 'post',
159     data: { PrivateKey, BackupPrivateKey, BackupKeySalt, Members },
162 export const updateBackupKey = ({ PrivateKey, KeySalt }: { PrivateKey: string; KeySalt: string }) => ({
163     url: 'core/v4/organizations/keys/backup',
164     method: 'post',
165     data: { PrivateKey, KeySalt },
168 export const activateOrganizationKey = (PrivateKey: string) => ({
169     url: 'core/v4/organizations/keys/activate',
170     method: 'put',
171     data: { PrivateKey },
174 export const uploadOrganizationKeySignature = (data: { AddressID: string; Signature: string }) => ({
175     url: 'core/v4/organizations/keys/signature',
176     method: 'put',
177     data,
180 export const leaveOrganisation = () => ({
181     url: 'core/v4/organizations/membership',
182     method: 'delete',
185 export const queryEnforceTwoFA = (Require: number) => ({
186     url: `core/v4/organizations/require2fa`,
187     method: 'put',
188     data: { Require },
191 export const queryRemoveTwoFA = () => ({
192     url: `core/v4/organizations/require2fa`,
193     method: 'delete',
196 export const sendEmailReminderTwoFA = () => ({
197     url: 'core/v4/organizations/2fa/remind',
198     method: 'post',