Merge branch 'IDTEAM-1.26.0' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / api / contacts.ts
blobbcff5b85568297c533e32860e4bec8996969a83b
1 export const queryContacts = ({
2     Page = 0,
3     PageSize = 1000,
4     LabelID,
5 }: {
6     Page?: number;
7     PageSize?: number;
8     LabelID?: string;
9 } = {}) => ({
10     url: 'contacts/v4/contacts',
11     method: 'get',
12     params: { Page, PageSize, LabelID },
13 });
15 export const queryContactExport = ({
16     Page = 0,
17     PageSize = 50,
18     LabelID,
19 }: {
20     Page?: number;
21     PageSize?: number;
22     LabelID?: string;
23 } = {}) => ({
24     url: 'contacts/v4/contacts/export',
25     method: 'get',
26     params: { Page, PageSize, LabelID },
27 });
29 export const getContact = (contactID: string) => ({
30     url: `contacts/v4/contacts/${contactID}`,
31     method: 'get',
32 });
34 interface Card {
35     Type: number;
36     Data: string;
37     Signature: string | null;
40 export const addContacts = ({
41     Contacts,
42     Overwrite,
43     Labels,
44     Import,
45 }: {
46     Contacts: {
47         Cards: Card[];
48     }[];
49     Overwrite: 0 | 1;
50     Import?: 0 | 1;
51     Labels?: number;
52     timeout?: number;
53 }) => ({
54     url: 'contacts/v4/contacts',
55     method: 'post',
56     data: { Contacts, Overwrite, Labels, Import },
57 });
59 export const updateContact = (contactID: string, { Cards }: { Cards: Card[] }) => ({
60     url: `contacts/v4/contacts/${contactID}`,
61     method: 'put',
62     data: { Cards },
63 });
65 export const labelContacts = ({ LabelID, ContactIDs }: { LabelID: string; ContactIDs: string[] }) => ({
66     url: 'contacts/v4/contacts/label',
67     method: 'put',
68     data: { LabelID, ContactIDs },
69 });
71 export const unLabelContacts = ({ LabelID, ContactIDs }: { LabelID: string; ContactIDs: string[] }) => ({
72     url: 'contacts/v4/contacts/unlabel',
73     method: 'put',
74     data: { LabelID, ContactIDs },
75 });
77 export const deleteContacts = (IDs: string[]) => ({
78     url: 'contacts/v4/contacts/delete',
79     method: 'put',
80     data: { IDs },
81 });
83 export const clearContacts = () => ({
84     url: 'contacts/v4/contacts',
85     method: 'delete',
86 });
88 export const queryContactEmails = ({
89     Page,
90     PageSize,
91     Email,
92     LabelID,
93 }: {
94     Page?: number;
95     PageSize?: number;
96 } & (
97     | {
98           Email?: string;
99           LabelID?: never;
100       }
101     | {
102           Email?: never;
103           LabelID?: string;
104       }
105 ) = {}) => ({
106     url: 'contacts/v4/contacts/emails',
107     method: 'get',
108     params: { Page, PageSize, Email, LabelID },
111 export const labelContactEmails = ({ LabelID, ContactEmailIDs }: { LabelID: string; ContactEmailIDs: string[] }) => ({
112     url: 'contacts/v4/contacts/emails/label',
113     method: 'put',
114     data: { LabelID, ContactEmailIDs },
117 export const unLabelContactEmails = ({ LabelID, ContactEmailIDs }: { LabelID: string; ContactEmailIDs: string[] }) => ({
118     url: 'contacts/v4/contacts/emails/unlabel',
119     method: 'put',
120     data: { LabelID, ContactEmailIDs },