0
Ticket Import
One script reply has been approved by the moderators Verified

Allowed For

  • Admins
Created by hugo697 634 days ago Viewed 22451 times
0
Submitted by hugo697 Typescript (fetch-only)
Verified 634 days ago
1
type Zendesk = {
2
  username: string;
3
  password: string;
4
  subdomain: string;
5
};
6
/**
7
 * Ticket Import
8
 * #### Allowed For
9

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