Update Ticket
One script reply has been approved by the moderators Verified

Update Ticket

Created by hugo697 844 days ago Picked 5 times
Submitted by hugo697 Typescript (fetch-only)
Verified 298 days ago
1
type Zendesk = {
2
  username: string;
3
  password: string;
4
  subdomain: string;
5
};
6
/**
7
 * Update Ticket
8
 * Update Ticket
9
 */
10
export async function main(
11
  auth: Zendesk,
12
  ticket_id: string,
13
  body: {
14
    ticket?: {
15
      additional_collaborators?: {
16
        email?: string;
17
        name?: string;
18
        [k: string]: unknown;
19
      }[];
20
      assignee_email?: string;
21
      assignee_id?: string;
22
      attribute_value_ids?: string[];
23
      collaborator_ids?: string;
24
      comment?: {
25
        attachments?: {
26
          content_type?: string;
27
          content_url?: string;
28
          deleted?: string;
29
          file_name?: string;
30
          height?: string;
31
          id?: string;
32
          inline?: string;
33
          malware_access_override?: string;
34
          malware_scan_result?: string;
35
          mapped_content_url?: string;
36
          size?: string;
37
          thumbnails?: {
38
            content_type?: string;
39
            content_url?: string;
40
            deleted?: string;
41
            file_name?: string;
42
            height?: string;
43
            id?: string;
44
            inline?: string;
45
            malware_access_override?: string;
46
            malware_scan_result?: string;
47
            mapped_content_url?: string;
48
            size?: string;
49
            url?: string;
50
            width?: string;
51
            [k: string]: unknown;
52
          }[];
53
          url?: string;
54
          width?: string;
55
          [k: string]: unknown;
56
        }[];
57
        audit_id?: string;
58
        author_id?: string;
59
        body?: string;
60
        created_at?: string;
61
        html_body?: string;
62
        id?: string;
63
        metadata?: { amet_c?: string; nisi03_?: boolean; [k: string]: unknown };
64
        plain_body?: string;
65
        public?: string;
66
        type?: string;
67
        uploads?: string[];
68
        via?: {
69
          channel?: string;
70
          source?: { sit2af?: string; [k: string]: unknown };
71
          [k: string]: unknown;
72
        };
73
        [k: string]: unknown;
74
      };
75
      custom_fields?: string;
76
      custom_status_id?: string;
77
      due_at?: string;
78
      email_ccs?: {
79
        action?: string;
80
        user_email?: string;
81
        user_id?: string;
82
        user_name?: string;
83
        [k: string]: unknown;
84
      }[];
85
      external_id?: string;
86
      followers?: {
87
        action?: string;
88
        user_email?: string;
89
        user_id?: string;
90
        [k: string]: unknown;
91
      }[];
92
      group_id?: string;
93
      organization_id?: string;
94
      priority?: string;
95
      problem_id?: string;
96
      requester_id?: string;
97
      safe_update?: string;
98
      sharing_agreement_ids?: string[];
99
      status?: string;
100
      subject?: string;
101
      tags?: string;
102
      type?: string;
103
      updated_stamp?: string;
104
      [k: string]: unknown;
105
    };
106
    [k: string]: unknown;
107
  }
108
) {
109
  const url = new URL(
110
    `https://${auth.subdomain}.zendesk.com/api/v2/tickets/${ticket_id}`
111
  );
112

113
  const response = await fetch(url, {
114
    method: "PUT",
115
    headers: {
116
      "Content-Type": "application/json",
117
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
118
    },
119
    body: JSON.stringify(body),
120
  });
121
  if (!response.ok) {
122
    const text = await response.text();
123
    throw new Error(`${response.status} ${text}`);
124
  }
125
  return await response.json();
126
}
127