0

List Tickets

by
Published Nov 7, 2023

List the account's tickets, one page at a time (cursor pagination). Pass `meta.after_cursor` from the previous response as `cursor` while `meta.has_more` is true. Archived tickets are not listed; use Search Tickets to filter by status, assignee, dates...

Script zendesk Verified

The script

Submitted by hugo989 Typescript (fetch-only)
Verified 5 days ago
1
//native
2

3
/**
4
 * List Tickets
5
 * List the account's tickets, one page at a time (cursor pagination). Pass `meta.after_cursor` from the previous response as `cursor` while `meta.has_more` is true. Archived tickets are not listed; use Search Tickets to filter by status, assignee, dates...
6
 */
7
export async function main(
8
  auth: RT.Zendesk,
9
  sort:
10
    | "id"
11
    | "-id"
12
    | "updated_at"
13
    | "-updated_at"
14
    | "status"
15
    | "-status"
16
    | undefined,
17
  page_size: number | undefined,
18
  cursor: string | undefined
19
) {
20
  const url = new URL(`https://${auth.subdomain}.zendesk.com/api/v2/tickets`)
21
  url.searchParams.append("page[size]", String(page_size || 100))
22
  if (sort) {
23
    url.searchParams.append("sort", sort)
24
  }
25
  if (cursor) {
26
    url.searchParams.append("page[after]", cursor)
27
  }
28

29
  const response = await fetch(url, {
30
    headers: {
31
      Authorization: auth.token
32
        ? `Bearer ${auth.token}`
33
        : `Basic ${btoa(`${auth.username}:${auth.password}`)}`,
34
      Accept: "application/json",
35
    },
36
  })
37

38
  if (!response.ok) {
39
    throw new Error(`${response.status} ${await response.text()}`)
40
  }
41

42
  return await response.json()
43
}
44

Other submissions
  • Submitted by hugo697 Typescript (fetch-only)
    Created 519 days ago
    1
    type Zendesk = {
    2
      username: string;
    3
      password: string;
    4
      subdomain: string;
    5
    };
    6
    /**
    7
     * List Tickets
    8
     * List Tickets
    9
     */
    10
    export async function main(auth: Zendesk, external_id: string | undefined) {
    11
      const url = new URL(`https://${auth.subdomain}.zendesk.com/api/v2/tickets`);
    12
      for (const [k, v] of [["external_id", external_id]]) {
    13
        if (v !== undefined && v !== "") {
    14
          url.searchParams.append(k, v);
    15
        }
    16
      }
    17
      const response = await fetch(url, {
    18
        method: "GET",
    19
        headers: {
    20
          Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
    21
        },
    22
        body: undefined,
    23
      });
    24
      if (!response.ok) {
    25
        const text = await response.text();
    26
        throw new Error(`${response.status} ${text}`);
    27
      }
    28
      return await response.json();
    29
    }
    30