1 | |
2 |
|
3 | |
4 | * List Prospects |
5 | * Lists prospects with optional filters (email, name, updatedAt range like "2024-01-01..inf") and cursor pagination. |
6 | */ |
7 | export async function main( |
8 | auth: RT.Outreach, |
9 | filter_emails: string | undefined, |
10 | filter_first_name: string | undefined, |
11 | filter_last_name: string | undefined, |
12 | filter_updated_at: string | undefined, |
13 | sort: string | undefined, |
14 | page_size: number | undefined, |
15 | page_after: string | undefined |
16 | ) { |
17 | const url = new URL("https://api.outreach.io/api/v2/prospects") |
18 | if (filter_emails !== undefined && filter_emails !== "") { |
19 | url.searchParams.append("filter[emails]", filter_emails) |
20 | } |
21 | if (filter_first_name !== undefined && filter_first_name !== "") { |
22 | url.searchParams.append("filter[firstName]", filter_first_name) |
23 | } |
24 | if (filter_last_name !== undefined && filter_last_name !== "") { |
25 | url.searchParams.append("filter[lastName]", filter_last_name) |
26 | } |
27 | if (filter_updated_at !== undefined && filter_updated_at !== "") { |
28 | url.searchParams.append("filter[updatedAt]", filter_updated_at) |
29 | } |
30 | if (sort !== undefined && sort !== "") { |
31 | url.searchParams.append("sort", sort) |
32 | } |
33 | if (page_size !== undefined) { |
34 | url.searchParams.append("page[size]", String(page_size)) |
35 | } |
36 | if (page_after !== undefined && page_after !== "") { |
37 | url.searchParams.append("page[after]", page_after) |
38 | } |
39 |
|
40 | const response = await fetch(url, { |
41 | headers: { |
42 | Authorization: `Bearer ${auth.token}`, |
43 | Accept: "application/vnd.api+json", |
44 | }, |
45 | }) |
46 |
|
47 | if (!response.ok) { |
48 | throw new Error(`${response.status} ${await response.text()}`) |
49 | } |
50 |
|
51 | return await response.json() |
52 | } |
53 |
|