0

Get all your SMS activity (unaggregated events)

by
Published Apr 8, 2025
Script brevo Verified

The script

Submitted by hugo697 Bun
Verified 428 days ago
1
//native
2
type Brevo = {
3
  apiKey: string;
4
};
5
/**
6
 * Get all your SMS activity (unaggregated events)
7
 *
8
 */
9
export async function main(
10
  auth: Brevo,
11
  limit: string | undefined,
12
  startDate: string | undefined,
13
  endDate: string | undefined,
14
  offset: string | undefined,
15
  days: string | undefined,
16
  phoneNumber: string | undefined,
17
  event:
18
    | "bounces"
19
    | "hardBounces"
20
    | "softBounces"
21
    | "delivered"
22
    | "sent"
23
    | "accepted"
24
    | "unsubscription"
25
    | "replies"
26
    | "blocked"
27
    | "rejected"
28
    | "skipped"
29
    | undefined,
30
  tags: string | undefined,
31
  sort: "asc" | "desc" | undefined,
32
) {
33
  const url = new URL(
34
    `https://api.brevo.com/v3/transactionalSMS/statistics/events`,
35
  );
36
  for (const [k, v] of [
37
    ["limit", limit],
38
    ["startDate", startDate],
39
    ["endDate", endDate],
40
    ["offset", offset],
41
    ["days", days],
42
    ["phoneNumber", phoneNumber],
43
    ["event", event],
44
    ["tags", tags],
45
    ["sort", sort],
46
  ]) {
47
    if (v !== undefined && v !== "" && k !== undefined) {
48
      url.searchParams.append(k, v);
49
    }
50
  }
51
  const response = await fetch(url, {
52
    method: "GET",
53
    headers: {
54
      "api-key": auth.apiKey,
55
    },
56
    body: undefined,
57
  });
58
  if (!response.ok) {
59
    const text = await response.text();
60
    throw new Error(`${response.status} ${text}`);
61
  }
62
  return await response.json();
63
}
64