0

SearchShifts

by
Published Oct 17, 2025

Returns a paginated list of `Shift` records for a business. The list to be returned can be filtered by: - Location IDs - Team member IDs - Shift status (`OPEN` or `CLOSED`) - Shift start - Shift end - Workday details The list can be sorted by: - `START_AT` - `END_AT` - `CREATED_AT` - `UPDATED_AT`

Script square Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type Square = {
3
  token: string;
4
};
5
/**
6
 * SearchShifts
7
 * Returns a paginated list of `Shift` records for a business.
8
The list to be returned can be filtered by:
9
- Location IDs
10
- Team member IDs
11
- Shift status (`OPEN` or `CLOSED`)
12
- Shift start
13
- Shift end
14
- Workday details
15

16
The list can be sorted by:
17
- `START_AT`
18
- `END_AT`
19
- `CREATED_AT`
20
- `UPDATED_AT`
21
 */
22
export async function main(
23
  auth: Square,
24
  body: {
25
    query?: {
26
      filter?: {
27
        location_ids?: string[];
28
        employee_ids?: string[];
29
        status?: "OPEN" | "CLOSED";
30
        start?: { start_at?: string; end_at?: string };
31
        end?: { start_at?: string; end_at?: string };
32
        workday?: {
33
          date_range?: { start_date?: string; end_date?: string };
34
          match_shifts_by?: "START_AT" | "END_AT" | "INTERSECTION";
35
          default_timezone?: string;
36
        };
37
        team_member_ids?: string[];
38
      };
39
      sort?: {
40
        field?: "START_AT" | "END_AT" | "CREATED_AT" | "UPDATED_AT";
41
        order?: "DESC" | "ASC";
42
      };
43
    };
44
    limit?: number;
45
    cursor?: string;
46
  },
47
) {
48
  const url = new URL(`https://connect.squareup.com/v2/labor/shifts/search`);
49

50
  const response = await fetch(url, {
51
    method: "POST",
52
    headers: {
53
      "Content-Type": "application/json",
54
      Authorization: "Bearer " + auth.token,
55
    },
56
    body: JSON.stringify(body),
57
  });
58
  if (!response.ok) {
59
    const text = await response.text();
60
    throw new Error(`${response.status} ${text}`);
61
  }
62
  return await response.json();
63
}
64