Merge branch 'IDTEAM-1.26.0' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / api / drive / invitation.ts
blob95e7d3baae65b2a65fa90dd16620ea915e8408b1
1 import type { SHARE_MEMBER_PERMISSIONS } from '../../drive/permissions';
2 import { API_CUSTOM_ERROR_CODES } from '../../errors';
3 import type { InviteExternalUserPayload, InviteProtonUserPayload } from '../../interfaces/drive/invitation';
5 export const queryInviteProtonUser = (shareID: string, { Invitation, EmailDetails }: InviteProtonUserPayload) => ({
6     method: 'post',
7     url: `drive/v2/shares/${shareID}/invitations`,
8     data: {
9         Invitation,
10         EmailDetails,
11     },
12 });
14 export const queryResendInvitation = (shareID: string, invitationID: string) => ({
15     method: 'post',
16     url: `drive/v2/shares/${shareID}/invitations/${invitationID}/sendemail`,
17 });
19 export const queryInvitationList = (shareID: string) => ({
20     method: 'get',
21     url: `drive/v2/shares/${shareID}/invitations`,
22 });
24 export const queryInvitationDetails = (invitationID: string) => ({
25     method: 'get',
26     url: `drive/v2/shares/invitations/${invitationID}`,
27     silence: [API_CUSTOM_ERROR_CODES.NOT_FOUND],
28 });
30 export const queryAcceptShareInvite = (
31     invitationID: string,
32     { SessionKeySignature }: { SessionKeySignature: string }
33 ) => ({
34     method: 'post',
35     url: `drive/v2/shares/invitations/${invitationID}/accept`,
36     data: {
37         SessionKeySignature,
38     },
39 });
41 export const queryRejectShareInvite = (invitationID: string) => ({
42     method: 'post',
43     url: `drive/v2/shares/invitations/${invitationID}/reject`,
44 });
46 export const queryDeleteInvitation = (shareID: string, invitationID: string) => ({
47     method: 'delete',
48     url: `drive/v2/shares/${shareID}/invitations/${invitationID}`,
49 });
51 //TODO: Add pagination
52 export const queryShareInvitationsListing = (volumeId: string, shareId: string) => ({
53     method: 'get',
54     url: `drive/v2/volumes/${volumeId}/shares/${shareId}/invitations`,
55 });
57 //TODO: Add pagination
58 export const queryShareInvitationDetails = (
59     volumeId: string,
60     shareId: string,
61     { InvitationIDs }: { InvitationIDs: string[] }
62 ) => ({
63     method: 'post',
64     url: `drive/v2/volumes/${volumeId}/shares/${shareId}/invitations`,
65     data: {
66         InvitationIDs,
67     },
68 });
70 export const queryUpdateInvitationPermissions = (
71     shareId: string,
72     invitationId: string,
73     Permissions: SHARE_MEMBER_PERMISSIONS
74 ) => ({
75     method: 'put',
76     url: `drive/v2/shares/${shareId}/invitations/${invitationId}`,
77     data: {
78         Permissions,
79     },
80 });
82 /** External invitations **/
83 export const queryInviteExternalUser = (
84     shareID: string,
85     { ExternalInvitation, EmailDetails }: InviteExternalUserPayload
86 ) => ({
87     method: 'post',
88     url: `drive/v2/shares/${shareID}/external-invitations`,
89     data: {
90         ExternalInvitation,
91         EmailDetails,
92     },
93 });
95 export const queryResendExternalInvitation = (shareID: string, externalInvitationId: string) => ({
96     method: 'post',
97     url: `drive/v2/shares/${shareID}/external-invitations/${externalInvitationId}/sendemail`,
98 });
100 export const queryExternalInvitationList = (shareID: string) => ({
101     method: 'get',
102     url: `drive/v2/shares/${shareID}/external-invitations`,
105 export const queryDeleteExternalInvitation = (shareID: string, externalInvitationId: string) => ({
106     method: 'delete',
107     url: `drive/v2/shares/${shareID}/external-invitations/${externalInvitationId}`,
110 export const queryUpdateExternalInvitationPermissions = (
111     shareId: string,
112     externalInvitationId: string,
113     Permissions: SHARE_MEMBER_PERMISSIONS
114 ) => ({
115     method: 'put',
116     url: `drive/v2/shares/${shareId}/external-invitations/${externalInvitationId}`,
117     data: {
118         Permissions,
119     },
122 export const queryListPendingInvitations = (params?: { AnchorID?: string }) => ({
123     method: 'get',
124     url: `drive/v2/shares/invitations`,
125     params,
128 export const queryListPendingExternalInvitations = (params?: { AnchorID?: string }) => ({
129     method: 'get',
130     url: `drive/v2/shares/external-invitations`,
131     params,