0

Create webhook

by
Published Oct 17, 2025

Creates a webhook.

Script box Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
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