0

CreateShift

by
Published Oct 17, 2025

Creates a new `Shift`.

Script square Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type Square = {
3
  token: string;
4
};
5
/**
6
 * CreateShift
7
 * Creates a new `Shift`.
8
 */
9
export async function main(
10
  auth: Square,
11
  body: {
12
    idempotency_key?: string;
13
    shift: {
14
      id?: string;
15
      employee_id?: string;
16
      location_id: string;
17
      timezone?: string;
18
      start_at: string;
19
      end_at?: string;
20
      wage?: {
21
        title?: string;
22
        hourly_rate?: {
23
          amount?: number;
24
          currency?:
25
            | "UNKNOWN_CURRENCY"
26
            | "AED"
27
            | "AFN"
28
            | "ALL"
29
            | "AMD"
30
            | "ANG"
31
            | "AOA"
32
            | "ARS"
33
            | "AUD"
34
            | "AWG"
35
            | "AZN"
36
            | "BAM"
37
            | "BBD"
38
            | "BDT"
39
            | "BGN"
40
            | "BHD"
41
            | "BIF"
42
            | "BMD"
43
            | "BND"
44
            | "BOB"
45
            | "BOV"
46
            | "BRL"
47
            | "BSD"
48
            | "BTN"
49
            | "BWP"
50
            | "BYR"
51
            | "BZD"
52
            | "CAD"
53
            | "CDF"
54
            | "CHE"
55
            | "CHF"
56
            | "CHW"
57
            | "CLF"
58
            | "CLP"
59
            | "CNY"
60
            | "COP"
61
            | "COU"
62
            | "CRC"
63
            | "CUC"
64
            | "CUP"
65
            | "CVE"
66
            | "CZK"
67
            | "DJF"
68
            | "DKK"
69
            | "DOP"
70
            | "DZD"
71
            | "EGP"
72
            | "ERN"
73
            | "ETB"
74
            | "EUR"
75
            | "FJD"
76
            | "FKP"
77
            | "GBP"
78
            | "GEL"
79
            | "GHS"
80
            | "GIP"
81
            | "GMD"
82
            | "GNF"
83
            | "GTQ"
84
            | "GYD"
85
            | "HKD"
86
            | "HNL"
87
            | "HRK"
88
            | "HTG"
89
            | "HUF"
90
            | "IDR"
91
            | "ILS"
92
            | "INR"
93
            | "IQD"
94
            | "IRR"
95
            | "ISK"
96
            | "JMD"
97
            | "JOD"
98
            | "JPY"
99
            | "KES"
100
            | "KGS"
101
            | "KHR"
102
            | "KMF"
103
            | "KPW"
104
            | "KRW"
105
            | "KWD"
106
            | "KYD"
107
            | "KZT"
108
            | "LAK"
109
            | "LBP"
110
            | "LKR"
111
            | "LRD"
112
            | "LSL"
113
            | "LTL"
114
            | "LVL"
115
            | "LYD"
116
            | "MAD"
117
            | "MDL"
118
            | "MGA"
119
            | "MKD"
120
            | "MMK"
121
            | "MNT"
122
            | "MOP"
123
            | "MRO"
124
            | "MUR"
125
            | "MVR"
126
            | "MWK"
127
            | "MXN"
128
            | "MXV"
129
            | "MYR"
130
            | "MZN"
131
            | "NAD"
132
            | "NGN"
133
            | "NIO"
134
            | "NOK"
135
            | "NPR"
136
            | "NZD"
137
            | "OMR"
138
            | "PAB"
139
            | "PEN"
140
            | "PGK"
141
            | "PHP"
142
            | "PKR"
143
            | "PLN"
144
            | "PYG"
145
            | "QAR"
146
            | "RON"
147
            | "RSD"
148
            | "RUB"
149
            | "RWF"
150
            | "SAR"
151
            | "SBD"
152
            | "SCR"
153
            | "SDG"
154
            | "SEK"
155
            | "SGD"
156
            | "SHP"
157
            | "SLL"
158
            | "SLE"
159
            | "SOS"
160
            | "SRD"
161
            | "SSP"
162
            | "STD"
163
            | "SVC"
164
            | "SYP"
165
            | "SZL"
166
            | "THB"
167
            | "TJS"
168
            | "TMT"
169
            | "TND"
170
            | "TOP"
171
            | "TRY"
172
            | "TTD"
173
            | "TWD"
174
            | "TZS"
175
            | "UAH"
176
            | "UGX"
177
            | "USD"
178
            | "USN"
179
            | "USS"
180
            | "UYI"
181
            | "UYU"
182
            | "UZS"
183
            | "VEF"
184
            | "VND"
185
            | "VUV"
186
            | "WST"
187
            | "XAF"
188
            | "XAG"
189
            | "XAU"
190
            | "XBA"
191
            | "XBB"
192
            | "XBC"
193
            | "XBD"
194
            | "XCD"
195
            | "XDR"
196
            | "XOF"
197
            | "XPD"
198
            | "XPF"
199
            | "XPT"
200
            | "XTS"
201
            | "XXX"
202
            | "YER"
203
            | "ZAR"
204
            | "ZMK"
205
            | "ZMW"
206
            | "BTC"
207
            | "XUS";
208
        };
209
        job_id?: string;
210
        tip_eligible?: false | true;
211
      };
212
      breaks?: {
213
        id?: string;
214
        start_at: string;
215
        end_at?: string;
216
        break_type_id: string;
217
        name: string;
218
        expected_duration: string;
219
        is_paid: false | true;
220
      }[];
221
      status?: "OPEN" | "CLOSED";
222
      version?: number;
223
      created_at?: string;
224
      updated_at?: string;
225
      team_member_id?: string;
226
      declared_cash_tip_money?: {
227
        amount?: number;
228
        currency?:
229
          | "UNKNOWN_CURRENCY"
230
          | "AED"
231
          | "AFN"
232
          | "ALL"
233
          | "AMD"
234
          | "ANG"
235
          | "AOA"
236
          | "ARS"
237
          | "AUD"
238
          | "AWG"
239
          | "AZN"
240
          | "BAM"
241
          | "BBD"
242
          | "BDT"
243
          | "BGN"
244
          | "BHD"
245
          | "BIF"
246
          | "BMD"
247
          | "BND"
248
          | "BOB"
249
          | "BOV"
250
          | "BRL"
251
          | "BSD"
252
          | "BTN"
253
          | "BWP"
254
          | "BYR"
255
          | "BZD"
256
          | "CAD"
257
          | "CDF"
258
          | "CHE"
259
          | "CHF"
260
          | "CHW"
261
          | "CLF"
262
          | "CLP"
263
          | "CNY"
264
          | "COP"
265
          | "COU"
266
          | "CRC"
267
          | "CUC"
268
          | "CUP"
269
          | "CVE"
270
          | "CZK"
271
          | "DJF"
272
          | "DKK"
273
          | "DOP"
274
          | "DZD"
275
          | "EGP"
276
          | "ERN"
277
          | "ETB"
278
          | "EUR"
279
          | "FJD"
280
          | "FKP"
281
          | "GBP"
282
          | "GEL"
283
          | "GHS"
284
          | "GIP"
285
          | "GMD"
286
          | "GNF"
287
          | "GTQ"
288
          | "GYD"
289
          | "HKD"
290
          | "HNL"
291
          | "HRK"
292
          | "HTG"
293
          | "HUF"
294
          | "IDR"
295
          | "ILS"
296
          | "INR"
297
          | "IQD"
298
          | "IRR"
299
          | "ISK"
300
          | "JMD"
301
          | "JOD"
302
          | "JPY"
303
          | "KES"
304
          | "KGS"
305
          | "KHR"
306
          | "KMF"
307
          | "KPW"
308
          | "KRW"
309
          | "KWD"
310
          | "KYD"
311
          | "KZT"
312
          | "LAK"
313
          | "LBP"
314
          | "LKR"
315
          | "LRD"
316
          | "LSL"
317
          | "LTL"
318
          | "LVL"
319
          | "LYD"
320
          | "MAD"
321
          | "MDL"
322
          | "MGA"
323
          | "MKD"
324
          | "MMK"
325
          | "MNT"
326
          | "MOP"
327
          | "MRO"
328
          | "MUR"
329
          | "MVR"
330
          | "MWK"
331
          | "MXN"
332
          | "MXV"
333
          | "MYR"
334
          | "MZN"
335
          | "NAD"
336
          | "NGN"
337
          | "NIO"
338
          | "NOK"
339
          | "NPR"
340
          | "NZD"
341
          | "OMR"
342
          | "PAB"
343
          | "PEN"
344
          | "PGK"
345
          | "PHP"
346
          | "PKR"
347
          | "PLN"
348
          | "PYG"
349
          | "QAR"
350
          | "RON"
351
          | "RSD"
352
          | "RUB"
353
          | "RWF"
354
          | "SAR"
355
          | "SBD"
356
          | "SCR"
357
          | "SDG"
358
          | "SEK"
359
          | "SGD"
360
          | "SHP"
361
          | "SLL"
362
          | "SLE"
363
          | "SOS"
364
          | "SRD"
365
          | "SSP"
366
          | "STD"
367
          | "SVC"
368
          | "SYP"
369
          | "SZL"
370
          | "THB"
371
          | "TJS"
372
          | "TMT"
373
          | "TND"
374
          | "TOP"
375
          | "TRY"
376
          | "TTD"
377
          | "TWD"
378
          | "TZS"
379
          | "UAH"
380
          | "UGX"
381
          | "USD"
382
          | "USN"
383
          | "USS"
384
          | "UYI"
385
          | "UYU"
386
          | "UZS"
387
          | "VEF"
388
          | "VND"
389
          | "VUV"
390
          | "WST"
391
          | "XAF"
392
          | "XAG"
393
          | "XAU"
394
          | "XBA"
395
          | "XBB"
396
          | "XBC"
397
          | "XBD"
398
          | "XCD"
399
          | "XDR"
400
          | "XOF"
401
          | "XPD"
402
          | "XPF"
403
          | "XPT"
404
          | "XTS"
405
          | "XXX"
406
          | "YER"
407
          | "ZAR"
408
          | "ZMK"
409
          | "ZMW"
410
          | "BTC"
411
          | "XUS";
412
      };
413
    };
414
  },
415
) {
416
  const url = new URL(`https://connect.squareup.com/v2/labor/shifts`);
417

418
  const response = await fetch(url, {
419
    method: "POST",
420
    headers: {
421
      "Content-Type": "application/json",
422
      Authorization: "Bearer " + auth.token,
423
    },
424
    body: JSON.stringify(body),
425
  });
426
  if (!response.ok) {
427
    const text = await response.text();
428
    throw new Error(`${response.status} ${text}`);
429
  }
430
  return await response.json();
431
}
432