1 | |
2 |
|
3 | |
4 | * Create Organization |
5 | * Create an organization. Names must be unique in the account. Users whose email domain is in `domain_names` can be mapped to it automatically. Set any other field through `fields`, e.g. `{ "organization_fields": { "tier": "gold" }, "group_id": 123 }`. |
6 | */ |
7 | export async function main( |
8 | auth: RT.Zendesk, |
9 | name: string, |
10 | domain_names: string[] | undefined, |
11 | details: string | undefined, |
12 | notes: string | undefined, |
13 | external_id: string | undefined, |
14 | tags: string[] | undefined, |
15 | fields: { [key: string]: any } | undefined |
16 | ) { |
17 | const organization = { |
18 | ...fields, |
19 | name: name || undefined, |
20 | domain_names: domain_names?.length ? domain_names : undefined, |
21 | details: details || undefined, |
22 | notes: notes || undefined, |
23 | external_id: external_id || undefined, |
24 | tags: tags?.length ? tags : undefined, |
25 | } |
26 |
|
27 | const response = await fetch( |
28 | `https://${auth.subdomain}.zendesk.com/api/v2/organizations`, |
29 | { |
30 | method: "POST", |
31 | headers: { |
32 | Authorization: auth.token |
33 | ? `Bearer ${auth.token}` |
34 | : `Basic ${btoa(`${auth.username}:${auth.password}`)}`, |
35 | "Content-Type": "application/json", |
36 | Accept: "application/json", |
37 | }, |
38 | body: JSON.stringify({ organization }), |
39 | } |
40 | ) |
41 |
|
42 | if (!response.ok) { |
43 | throw new Error(`${response.status} ${await response.text()}`) |
44 | } |
45 |
|
46 | return await response.json() |
47 | } |
48 |
|