//native
type Square = {
token: string;
};
/**
* SearchShifts
* 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`
*/
export async function main(
auth: Square,
body: {
query?: {
filter?: {
location_ids?: string[];
employee_ids?: string[];
status?: "OPEN" | "CLOSED";
start?: { start_at?: string; end_at?: string };
end?: { start_at?: string; end_at?: string };
workday?: {
date_range?: { start_date?: string; end_date?: string };
match_shifts_by?: "START_AT" | "END_AT" | "INTERSECTION";
default_timezone?: string;
};
team_member_ids?: string[];
};
sort?: {
field?: "START_AT" | "END_AT" | "CREATED_AT" | "UPDATED_AT";
order?: "DESC" | "ASC";
};
};
limit?: number;
cursor?: string;
},
) {
const url = new URL(`https://connect.squareup.com/v2/labor/shifts/search`);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 235 days ago