Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / api / user.ts
blobc21c48d270f22c5ed40a55e0e2ffbebb8679f281
1 import type { ProductParam } from '../apps/product';
2 import { getProductHeaders } from '../apps/product';
3 import type { CLIENT_TYPES } from '../constants';
4 import type { HumanVerificationMethodType } from '../interfaces';
6 export const getUser = () => ({
7     url: 'core/v4/users',
8     method: 'get',
9 });
11 export const queryCreateUser = (
12     data: {
13         Username: string;
14         Domain?: string;
15         Email?: string;
16         Phone?: string;
17         Type: CLIENT_TYPES; // 1 = mail, 2 = VPN
18         Referrer?: string;
19         ReferralIdentifier?: string;
20         ReferralID?: string; // Invite
21         TokenPayment?: string;
22         Payload?: {
23             [key: string]: string;
24         };
25         Salt?: string;
26     },
27     product: ProductParam
28 ) => ({
29     url: 'core/v4/users',
30     method: 'post',
31     data,
32     headers: getProductHeaders(product, {
33         endpoint: 'core/v4/users',
34         product,
35     }),
36 });
38 export const getRecoveryMethods = (Username: string) => ({
39     url: 'core/v4/users/reset',
40     method: 'get',
41     params: { Username },
42 });
44 export const queryCreateUserExternal = (
45     data: {
46         Email: string;
47         Token?: string;
48         TokenType?: HumanVerificationMethodType;
49         Type: CLIENT_TYPES; // 1 = mail, 2 = VPN
50         Referrer?: string;
51         TokenPayment?: string;
52         TokenPreVerifiedAddress?: string;
53         Payload?: {
54             [key: string]: string;
55         };
56         Salt?: string;
57     },
58     product: ProductParam
59 ) => ({
60     url: 'core/v4/users/external',
61     method: 'post',
62     data,
63     headers: getProductHeaders(product, {
64         endpoint: 'core/v4/users/external',
65         product,
66     }),
67 });
69 export const queryUnlock = () => ({
70     url: 'core/v4/users/unlock',
71     method: 'put',
72 });
74 export const canDelete = () => ({
75     url: 'core/v4/users/delete',
76     method: 'get',
77 });
79 export const deleteUser = (data: { Reason?: string; Feedback?: string; Email?: string }) => ({
80     url: 'core/v4/users/delete',
81     method: 'put',
82     data,
83 });
85 export const unlockPasswordChanges = () => ({
86     url: 'core/v4/users/password',
87     method: 'put',
88 });
90 export const lockSensitiveSettings = () => ({
91     url: 'core/v4/users/lock',
92     method: 'put',
93 });
95 export const getHumanVerificationMethods = () => ({
96     url: 'core/v4/users/human',
97     method: 'get',
98 });
100 export const queryVerificationCode = (
101     Type: 'email' | 'sms',
102     Destination:
103         | {
104               Address: string;
105               Phone?: never;
106           }
107         | {
108               Address?: never;
109               Phone: string;
110           }
111 ) => ({
112     url: 'core/v4/users/code',
113     method: 'post',
114     data: { Type, Destination },
117 export const queryCheckUsernameAvailability = (Name: string, ParseDomain?: boolean) => ({
118     url: 'core/v4/users/available',
119     method: 'get',
120     params: { Name, ParseDomain: ParseDomain ? 1 : 0 },
123 export const queryCheckEmailAvailability = (Name: string) => ({
124     url: 'core/v4/users/availableExternal',
125     method: 'get',
126     params: { Name },
129 export const queryDirectSignupStatus = (
130     Type: CLIENT_TYPES // 1 = mail, 2 = VPN
131 ) => ({
132     url: 'core/v4/users/direct',
133     method: 'get',
134     params: { Type },
137 export const queryCheckVerificationCode = (
138     Token: string,
139     TokenType: 'email' | 'sms' | 'invite' | 'coupon' | 'payment',
140     Type: CLIENT_TYPES // 1 = mail, 2 = VPN
141 ) => ({
142     url: 'core/v4/users/check',
143     method: 'put',
144     data: { Token, TokenType, Type },
147 export const getInvitations = () => ({
148     url: 'core/v4/users/invitations',
149     method: 'get',
152 export const acceptInvitation = (invitationID: string) => ({
153     url: `core/v4/users/invitations/${invitationID}/accept`,
154     method: 'post',
157 export const rejectInvitation = (invitationID: string) => ({
158     url: `core/v4/users/invitations/${invitationID}/reject`,
159     method: 'post',
162 export const disableUser = (data: { JWT: string }) => ({
163     url: `core/v4/users/disable/${data.JWT}`,
164     method: 'get',