Delete an existing feed connection

By passing in FeedConnections array object in the body, you can delete a feed connection.

Script xero Verified

by hugo697 ยท 12/20/2024

The script

Submitted by hugo697 Bun
Verified 515 days ago
1
//native
2
type Xero = {
3
	token: string
4
}
5
/**
6
 * Delete an existing feed connection
7
 * By passing in FeedConnections array object in the body, you can delete a feed connection.
8
 */
9
export async function main(
10
	auth: Xero,
11
	Xero_Tenant_Id: string,
12
	Idempotency_Key: string,
13
	body: {
14
		pagination?: {
15
			page?: number
16
			pageSize?: number
17
			pageCount?: number
18
			itemCount?: number
19
		}
20
		items?: {
21
			id?: string
22
			accountToken?: string
23
			accountNumber?: string
24
			accountName?: string
25
			accountId?: string
26
			accountType?: 'BANK' | 'CREDITCARD'
27
			currency?:
28
				| 'AED'
29
				| 'AFN'
30
				| 'ALL'
31
				| 'AMD'
32
				| 'ANG'
33
				| 'AOA'
34
				| 'ARS'
35
				| 'AUD'
36
				| 'AWG'
37
				| 'AZN'
38
				| 'BAM'
39
				| 'BBD'
40
				| 'BDT'
41
				| 'BGN'
42
				| 'BHD'
43
				| 'BIF'
44
				| 'BMD'
45
				| 'BND'
46
				| 'BOB'
47
				| 'BRL'
48
				| 'BSD'
49
				| 'BTN'
50
				| 'BWP'
51
				| 'BYN'
52
				| 'BZD'
53
				| 'CAD'
54
				| 'CDF'
55
				| 'CHF'
56
				| 'CLP'
57
				| 'CNY'
58
				| 'COP'
59
				| 'CRC'
60
				| 'CUC'
61
				| 'CUP'
62
				| 'CVE'
63
				| 'CZK'
64
				| 'DJF'
65
				| 'DKK'
66
				| 'DOP'
67
				| 'DZD'
68
				| 'EGP'
69
				| 'ERN'
70
				| 'ETB'
71
				| 'EUR'
72
				| 'FJD'
73
				| 'FKP'
74
				| 'GBP'
75
				| 'GEL'
76
				| 'GGP'
77
				| 'GHS'
78
				| 'GIP'
79
				| 'GMD'
80
				| 'GNF'
81
				| 'GTQ'
82
				| 'GYD'
83
				| 'HKD'
84
				| 'HNL'
85
				| 'HRK'
86
				| 'HTG'
87
				| 'HUF'
88
				| 'IDR'
89
				| 'ILS'
90
				| 'IMP'
91
				| 'INR'
92
				| 'IQD'
93
				| 'IRR'
94
				| 'ISK'
95
				| 'JEP'
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
				| 'LYD'
114
				| 'MAD'
115
				| 'MDL'
116
				| 'MGA'
117
				| 'MKD'
118
				| 'MMK'
119
				| 'MNT'
120
				| 'MOP'
121
				| 'MRU'
122
				| 'MUR'
123
				| 'MVR'
124
				| 'MWK'
125
				| 'MXN'
126
				| 'MYR'
127
				| 'MZN'
128
				| 'NAD'
129
				| 'NGN'
130
				| 'NIO'
131
				| 'NOK'
132
				| 'NPR'
133
				| 'NZD'
134
				| 'OMR'
135
				| 'PAB'
136
				| 'PEN'
137
				| 'PGK'
138
				| 'PHP'
139
				| 'PKR'
140
				| 'PLN'
141
				| 'PYG'
142
				| 'QAR'
143
				| 'RON'
144
				| 'RSD'
145
				| 'RUB'
146
				| 'RWF'
147
				| 'SAR'
148
				| 'SBD'
149
				| 'SCR'
150
				| 'SDG'
151
				| 'SEK'
152
				| 'SGD'
153
				| 'SHP'
154
				| 'SLL'
155
				| 'SOS'
156
				| 'SPL'
157
				| 'SRD'
158
				| 'STN'
159
				| 'SVC'
160
				| 'SYP'
161
				| 'SZL'
162
				| 'THB'
163
				| 'TJS'
164
				| 'TMT'
165
				| 'TND'
166
				| 'TOP'
167
				| 'TRY'
168
				| 'TTD'
169
				| 'TVD'
170
				| 'TWD'
171
				| 'TZS'
172
				| 'UAH'
173
				| 'UGX'
174
				| 'USD'
175
				| 'UYU'
176
				| 'UZS'
177
				| 'VEF'
178
				| 'VND'
179
				| 'VUV'
180
				| 'WST'
181
				| 'XAF'
182
				| 'XCD'
183
				| 'XDR'
184
				| 'XOF'
185
				| 'XPF'
186
				| 'YER'
187
				| 'ZAR'
188
				| 'ZMW'
189
				| 'ZMK'
190
				| 'ZWD'
191
			country?:
192
				| 'AD'
193
				| 'AE'
194
				| 'AF'
195
				| 'AG'
196
				| 'AI'
197
				| 'AL'
198
				| 'AM'
199
				| 'AN'
200
				| 'AO'
201
				| 'AQ'
202
				| 'AR'
203
				| 'AS'
204
				| 'AT'
205
				| 'AU'
206
				| 'AW'
207
				| 'AZ'
208
				| 'BA'
209
				| 'BB'
210
				| 'BD'
211
				| 'BE'
212
				| 'BF'
213
				| 'BG'
214
				| 'BH'
215
				| 'BI'
216
				| 'BJ'
217
				| 'BL'
218
				| 'BM'
219
				| 'BN'
220
				| 'BO'
221
				| 'BR'
222
				| 'BS'
223
				| 'BT'
224
				| 'BW'
225
				| 'BY'
226
				| 'BZ'
227
				| 'CA'
228
				| 'CC'
229
				| 'CD'
230
				| 'CF'
231
				| 'CG'
232
				| 'CH'
233
				| 'CI'
234
				| 'CK'
235
				| 'CL'
236
				| 'CM'
237
				| 'CN'
238
				| 'CO'
239
				| 'CR'
240
				| 'CU'
241
				| 'CV'
242
				| 'CW'
243
				| 'CX'
244
				| 'CY'
245
				| 'CZ'
246
				| 'DE'
247
				| 'DJ'
248
				| 'DK'
249
				| 'DM'
250
				| 'DO'
251
				| 'DZ'
252
				| 'EC'
253
				| 'EE'
254
				| 'EG'
255
				| 'EH'
256
				| 'ER'
257
				| 'ES'
258
				| 'ET'
259
				| 'FI'
260
				| 'FJ'
261
				| 'FK'
262
				| 'FM'
263
				| 'FO'
264
				| 'FR'
265
				| 'GA'
266
				| 'GB'
267
				| 'GD'
268
				| 'GE'
269
				| 'GG'
270
				| 'GH'
271
				| 'GI'
272
				| 'GL'
273
				| 'GM'
274
				| 'GN'
275
				| 'GQ'
276
				| 'GR'
277
				| 'GT'
278
				| 'GU'
279
				| 'GW'
280
				| 'GY'
281
				| 'HK'
282
				| 'HN'
283
				| 'HR'
284
				| 'HT'
285
				| 'HU'
286
				| 'ID'
287
				| 'IE'
288
				| 'IL'
289
				| 'IM'
290
				| 'IN'
291
				| 'IO'
292
				| 'IQ'
293
				| 'IR'
294
				| 'IS'
295
				| 'IT'
296
				| 'JE'
297
				| 'JM'
298
				| 'JO'
299
				| 'JP'
300
				| 'KE'
301
				| 'KG'
302
				| 'KH'
303
				| 'KI'
304
				| 'KM'
305
				| 'KN'
306
				| 'KP'
307
				| 'KR'
308
				| 'KW'
309
				| 'KY'
310
				| 'KZ'
311
				| 'LA'
312
				| 'LB'
313
				| 'LC'
314
				| 'LI'
315
				| 'LK'
316
				| 'LR'
317
				| 'LS'
318
				| 'LT'
319
				| 'LU'
320
				| 'LV'
321
				| 'LY'
322
				| 'MA'
323
				| 'MC'
324
				| 'MD'
325
				| 'ME'
326
				| 'MF'
327
				| 'MG'
328
				| 'MH'
329
				| 'MK'
330
				| 'ML'
331
				| 'MM'
332
				| 'MN'
333
				| 'MO'
334
				| 'MP'
335
				| 'MR'
336
				| 'MS'
337
				| 'MT'
338
				| 'MU'
339
				| 'MV'
340
				| 'MW'
341
				| 'MX'
342
				| 'MY'
343
				| 'MZ'
344
				| 'NA'
345
				| 'NC'
346
				| 'NE'
347
				| 'NG'
348
				| 'NI'
349
				| 'NL'
350
				| 'NO'
351
				| 'NP'
352
				| 'NR'
353
				| 'NU'
354
				| 'NZ'
355
				| 'OM'
356
				| 'PA'
357
				| 'PE'
358
				| 'PF'
359
				| 'PG'
360
				| 'PH'
361
				| 'PK'
362
				| 'PL'
363
				| 'PM'
364
				| 'PN'
365
				| 'PR'
366
				| 'PS'
367
				| 'PT'
368
				| 'PW'
369
				| 'PY'
370
				| 'QA'
371
				| 'RE'
372
				| 'RO'
373
				| 'RS'
374
				| 'RU'
375
				| 'RW'
376
				| 'SA'
377
				| 'SB'
378
				| 'SC'
379
				| 'SD'
380
				| 'SE'
381
				| 'SG'
382
				| 'SH'
383
				| 'SI'
384
				| 'SJ'
385
				| 'SK'
386
				| 'SL'
387
				| 'SM'
388
				| 'SN'
389
				| 'SO'
390
				| 'SR'
391
				| 'SS'
392
				| 'ST'
393
				| 'SV'
394
				| 'SX'
395
				| 'SY'
396
				| 'SZ'
397
				| 'TC'
398
				| 'TD'
399
				| 'TG'
400
				| 'TH'
401
				| 'TJ'
402
				| 'TK'
403
				| 'TL'
404
				| 'TM'
405
				| 'TN'
406
				| 'TO'
407
				| 'TR'
408
				| 'TT'
409
				| 'TV'
410
				| 'TW'
411
				| 'TZ'
412
				| 'UA'
413
				| 'UG'
414
				| 'US'
415
				| 'UY'
416
				| 'UZ'
417
				| 'VA'
418
				| 'VC'
419
				| 'VE'
420
				| 'VG'
421
				| 'VI'
422
				| 'VN'
423
				| 'VU'
424
				| 'WF'
425
				| 'WS'
426
				| 'XK'
427
				| 'YE'
428
				| 'YT'
429
				| 'ZA'
430
				| 'ZM'
431
				| 'ZW'
432
			status?: 'PENDING' | 'REJECTED'
433
			error?: {
434
				title?: string
435
				status?: number
436
				detail?: string
437
				type?:
438
					| 'invalid-request'
439
					| 'invalid-application'
440
					| 'invalid-feed-connection'
441
					| 'duplicate-statement'
442
					| 'invalid-end-balance'
443
					| 'invalid-start-and-end-date'
444
					| 'invalid-start-date'
445
					| 'internal-error'
446
					| 'feed-already-connected-in-current-organisation'
447
					| 'invalid-end-date'
448
					| 'statement-not-found'
449
					| 'feed-connected-in-different-organisation'
450
					| 'feed-already-connected-in-different-organisation'
451
					| 'bank-feed-not-found'
452
					| 'invalid-country-specified'
453
					| 'invalid-organisation-bank-feeds'
454
					| 'invalid-organisation-multi-currency'
455
					| 'invalid-feed-connection-for-organisation'
456
					| 'invalid-user-role'
457
					| 'account-not-valid'
458
					| 'feed-not-found-or-already-deleted'
459
			}
460
		}[]
461
	}
462
) {
463
	const url = new URL(`https://api.xero.com/bankfeeds.xro/1.0/FeedConnections/DeleteRequests`)
464

465
	const response = await fetch(url, {
466
		method: 'POST',
467
		headers: {
468
			Accept: 'application/json',
469
			'Xero-Tenant-Id': Xero_Tenant_Id,
470
			'Idempotency-Key': Idempotency_Key,
471
			'Content-Type': 'application/json',
472
			Authorization: 'Bearer ' + auth.token
473
		},
474
		body: JSON.stringify(body)
475
	})
476
	if (!response.ok) {
477
		const text = await response.text()
478
		throw new Error(`${response.status} ${text}`)
479
	}
480
	return await response.json()
481
}
482