Ticket Bulk Import

Accepts an array of up to 100 ticket objects. #### Allowed For * Admins

Script zendesk Verified

by hugo697 ยท 11/7/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 377 days ago
1
type Zendesk = {
2
  username: string;
3
  password: string;
4
  subdomain: string;
5
};
6
/**
7
 * Ticket Bulk Import
8
 * Accepts an array of up to 100 ticket objects.
9

10
#### Allowed For
11

12
* Admins
13
 */
14
export async function main(
15
  auth: Zendesk,
16
  archive_immediately: string | undefined,
17
  body: {
18
    tickets?: {
19
      assignee_id?: string;
20
      comments?: {
21
        attachments?: {
22
          content_type?: string;
23
          content_url?: string;
24
          deleted?: string;
25
          file_name?: string;
26
          height?: string;
27
          id?: string;
28
          inline?: string;
29
          malware_access_override?: string;
30
          malware_scan_result?: string;
31
          mapped_content_url?: string;
32
          size?: string;
33
          thumbnails?: {
34
            content_type?: string;
35
            content_url?: string;
36
            deleted?: string;
37
            file_name?: string;
38
            height?: string;
39
            id?: string;
40
            inline?: string;
41
            malware_access_override?: string;
42
            malware_scan_result?: string;
43
            mapped_content_url?: string;
44
            size?: string;
45
            url?: string;
46
            width?: string;
47
            [k: string]: unknown;
48
          }[];
49
          url?: string;
50
          width?: string;
51
          [k: string]: unknown;
52
        }[];
53
        audit_id?: string;
54
        author_id?: string;
55
        body?: string;
56
        created_at?: string;
57
        html_body?: string;
58
        id?: string;
59
        metadata?: { dolor_3d?: boolean; non0?: boolean; [k: string]: unknown };
60
        plain_body?: string;
61
        public?: string;
62
        type?: string;
63
        uploads?: string[];
64
        value?: string;
65
        via?: {
66
          channel?: string;
67
          source?: {
68
            dolore41d?: number;
69
            laborum14?: number;
70
            pariatur05c?: string;
71
            [k: string]: unknown;
72
          };
73
          [k: string]: unknown;
74
        };
75
        [k: string]: unknown;
76
      }[];
77
      description?: string;
78
      requester_id?: string;
79
      subject?: string;
80
      tags?: string[];
81
      [k: string]: unknown;
82
    }[];
83
    [k: string]: unknown;
84
  }
85
) {
86
  const url = new URL(
87
    `https://${auth.subdomain}.zendesk.com/api/v2/imports/tickets/create_many`
88
  );
89
  for (const [k, v] of [["archive_immediately", archive_immediately]]) {
90
    if (v !== undefined && v !== "") {
91
      url.searchParams.append(k, v);
92
    }
93
  }
94
  const response = await fetch(url, {
95
    method: "POST",
96
    headers: {
97
      "Content-Type": "application/json",
98
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
99
    },
100
    body: JSON.stringify(body),
101
  });
102
  if (!response.ok) {
103
    const text = await response.text();
104
    throw new Error(`${response.status} ${text}`);
105
  }
106
  return await response.json();
107
}
108