1 | type Accelo = { |
2 | clientId: string |
3 | clientSecret: string |
4 | deployment: string |
5 | } |
6 |
|
7 | export async function main( |
8 | resource: Accelo, |
9 | data: { |
10 | name: string |
11 | parent_id?: number |
12 | status_id?: number |
13 | custom_id?: string |
14 | website?: string |
15 | phone?: string |
16 | fax?: string |
17 | comments?: string |
18 | standing?: string |
19 | } |
20 | ) { |
21 | |
22 | const accessTokenResponse = (await ( |
23 | await fetch(`https://${resource.deployment}.api.accelo.com/oauth2/v0/token`, { |
24 | method: 'POST', |
25 | headers: { |
26 | 'Content-Type': 'application/x-www-form-urlencoded', |
27 | Authorization: `Basic ${Buffer.from( |
28 | `${resource.clientId}:${resource.clientSecret}` |
29 | ).toString('base64')}` |
30 | }, |
31 | body: new URLSearchParams({ |
32 | grant_type: 'client_credentials', |
33 | scope: 'write(all)' |
34 | }) |
35 | }) |
36 | ).json()) as any |
37 | const accessToken = accessTokenResponse.access_token |
38 |
|
39 | const form = new URLSearchParams() |
40 | Object.entries(data).forEach(([key, value]) => value && form.append(key, value + '')) |
41 |
|
42 | return ( |
43 | await fetch(`https://${resource.deployment}.api.accelo.com/api/v0/companies`, { |
44 | method: 'POST', |
45 | headers: { |
46 | 'Content-Type': 'application/x-www-form-urlencoded', |
47 | Authorization: `Bearer ${accessToken}` |
48 | }, |
49 | body: form |
50 | }) |
51 | ).json() |
52 | } |
53 |
|