1 | |
2 | type Box = { |
3 | token: string; |
4 | }; |
5 | |
6 | * Create webhook |
7 | * Creates a webhook. |
8 | */ |
9 | export async function main( |
10 | auth: Box, |
11 | body: { |
12 | target: { id?: string; type?: "file" | "folder" }; |
13 | address: string; |
14 | triggers: |
15 | | "FILE.UPLOADED" |
16 | | "FILE.PREVIEWED" |
17 | | "FILE.DOWNLOADED" |
18 | | "FILE.TRASHED" |
19 | | "FILE.DELETED" |
20 | | "FILE.RESTORED" |
21 | | "FILE.COPIED" |
22 | | "FILE.MOVED" |
23 | | "FILE.LOCKED" |
24 | | "FILE.UNLOCKED" |
25 | | "FILE.RENAMED" |
26 | | "COMMENT.CREATED" |
27 | | "COMMENT.UPDATED" |
28 | | "COMMENT.DELETED" |
29 | | "TASK_ASSIGNMENT.CREATED" |
30 | | "TASK_ASSIGNMENT.UPDATED" |
31 | | "METADATA_INSTANCE.CREATED" |
32 | | "METADATA_INSTANCE.UPDATED" |
33 | | "METADATA_INSTANCE.DELETED" |
34 | | "FOLDER.CREATED" |
35 | | "FOLDER.RENAMED" |
36 | | "FOLDER.DOWNLOADED" |
37 | | "FOLDER.RESTORED" |
38 | | "FOLDER.DELETED" |
39 | | "FOLDER.COPIED" |
40 | | "FOLDER.MOVED" |
41 | | "FOLDER.TRASHED" |
42 | | "WEBHOOK.DELETED" |
43 | | "COLLABORATION.CREATED" |
44 | | "COLLABORATION.ACCEPTED" |
45 | | "COLLABORATION.REJECTED" |
46 | | "COLLABORATION.REMOVED" |
47 | | "COLLABORATION.UPDATED" |
48 | | "SHARED_LINK.DELETED" |
49 | | "SHARED_LINK.CREATED" |
50 | | "SHARED_LINK.UPDATED" |
51 | | "SIGN_REQUEST.COMPLETED" |
52 | | "SIGN_REQUEST.DECLINED" |
53 | | "SIGN_REQUEST.EXPIRED" |
54 | | "SIGN_REQUEST.SIGNER_EMAIL_BOUNCED"[]; |
55 | }, |
56 | ) { |
57 | const url = new URL(`https://api.box.com/2.0/webhooks`); |
58 |
|
59 | const response = await fetch(url, { |
60 | method: "POST", |
61 | headers: { |
62 | "Content-Type": "application/json", |
63 | Authorization: "Bearer " + auth.token, |
64 | }, |
65 | body: JSON.stringify(body), |
66 | }); |
67 | if (!response.ok) { |
68 | const text = await response.text(); |
69 | throw new Error(`${response.status} ${text}`); |
70 | } |
71 | return await response.json(); |
72 | } |
73 |
|