1 | |
2 |
|
3 | |
4 | * List Tasks |
5 | * Lists tasks, filterable by state, task type, prospect or dueAt range (e.g. "2024-01-01..inf"). |
6 | */ |
7 | export async function main( |
8 | auth: RT.Outreach, |
9 | filter_state: ("pending" | "incomplete" | "complete") | undefined, |
10 | filter_task_type: string | undefined, |
11 | filter_prospect_id: number | undefined, |
12 | filter_due_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/tasks") |
18 | if (filter_state !== undefined) { |
19 | url.searchParams.append("filter[state]", filter_state) |
20 | } |
21 | if (filter_task_type !== undefined && filter_task_type !== "") { |
22 | url.searchParams.append("filter[taskType]", filter_task_type) |
23 | } |
24 | if (filter_prospect_id !== undefined) { |
25 | url.searchParams.append("filter[prospect][id]", String(filter_prospect_id)) |
26 | } |
27 | if (filter_due_at !== undefined && filter_due_at !== "") { |
28 | url.searchParams.append("filter[dueAt]", filter_due_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 |
|