1 | |
2 | type Motimate = { |
3 | token: string |
4 | } |
5 | |
6 | * Fetch group memberships |
7 | * Fetches GroupMemberships, i.e. relationships between Groups and Users. |
8 | */ |
9 | export async function main( |
10 | auth: Motimate, |
11 | filter_role_: string | undefined, |
12 | filter_group_id_: string | undefined, |
13 | filter_group_external_id_: string | undefined, |
14 | filter_user_id_: string | undefined, |
15 | filter_user_external_id_: string | undefined, |
16 | filter_imported_: string | undefined, |
17 | filter_created_at_lteq_: string | undefined, |
18 | filter_updated_at_lteq_: string | undefined |
19 | ) { |
20 | const url = new URL(`https://motimateapp.com/public_api/group_memberships`) |
21 |
|
22 | for (const [k, v] of [ |
23 | ['filter[role]', filter_role_], |
24 | ['filter[group_id]', filter_group_id_], |
25 | ['filter[group_external_id]', filter_group_external_id_], |
26 | ['filter[user_id]', filter_user_id_], |
27 | ['filter[user_external_id]', filter_user_external_id_], |
28 | ['filter[imported]', filter_imported_], |
29 | ['filter[created_at_lteq]', filter_created_at_lteq_], |
30 | ['filter[updated_at_lteq]', filter_updated_at_lteq_] |
31 | ]) { |
32 | if (v !== undefined && v !== '' && k !== undefined) { |
33 | url.searchParams.append(k, v) |
34 | } |
35 | } |
36 |
|
37 | const response = await fetch(url, { |
38 | method: 'GET', |
39 | headers: { |
40 | Authorization: 'Bearer ' + auth.token |
41 | } |
42 | }) |
43 |
|
44 | if (!response.ok) { |
45 | const text = await response.text() |
46 | throw new Error(`${response.status} ${text}`) |
47 | } |
48 |
|
49 | return await response.json() |
50 | } |
51 |
|