Edit zone settings info

Edit settings for a zone.

Script cloudflare Verified

by hugo697 ยท 11/16/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 383 days ago
1
type Cloudflare = {
2
  token: string;
3
  email: string;
4
  key: string;
5
};
6
/**
7
 * Edit zone settings info
8
 * Edit settings for a zone.
9
 */
10
export async function main(
11
  auth: Cloudflare,
12
  zone_identifier: string,
13
  body: {
14
    items: (
15
      | ({
16
          editable?: true | false;
17
          id: string;
18
          modified_on?: string;
19
          value: { [k: string]: unknown };
20
          [k: string]: unknown;
21
        } & { id?: "0rtt"; value?: "on" | "off"; [k: string]: unknown })
22
      | ({
23
          editable?: true | false;
24
          id: string;
25
          modified_on?: string;
26
          value: { [k: string]: unknown };
27
          [k: string]: unknown;
28
        } & {
29
          id?: "advanced_ddos";
30
          value?: "on" | "off";
31
          [k: string]: unknown;
32
        })
33
      | ({
34
          editable?: true | false;
35
          id: string;
36
          modified_on?: string;
37
          value: { [k: string]: unknown };
38
          [k: string]: unknown;
39
        } & {
40
          id?: "always_online";
41
          value?: "on" | "off";
42
          [k: string]: unknown;
43
        })
44
      | ({
45
          editable?: true | false;
46
          id: string;
47
          modified_on?: string;
48
          value: { [k: string]: unknown };
49
          [k: string]: unknown;
50
        } & {
51
          id?: "always_use_https";
52
          value?: "on" | "off";
53
          [k: string]: unknown;
54
        } & string)
55
      | ({
56
          editable?: true | false;
57
          id: string;
58
          modified_on?: string;
59
          value: { [k: string]: unknown };
60
          [k: string]: unknown;
61
        } & {
62
          id?: "automatic_https_rewrites";
63
          value?: "on" | "off";
64
          [k: string]: unknown;
65
        } & string)
66
      | ({
67
          editable?: true | false;
68
          id: string;
69
          modified_on?: string;
70
          value: { [k: string]: unknown };
71
          [k: string]: unknown;
72
        } & { id?: "brotli"; value?: "off" | "on"; [k: string]: unknown })
73
      | ({
74
          editable?: true | false;
75
          id: string;
76
          modified_on?: string;
77
          value: { [k: string]: unknown };
78
          [k: string]: unknown;
79
        } & {
80
          id?: "browser_cache_ttl";
81
          value?:
82
            | 0
83
            | 30
84
            | 60
85
            | 120
86
            | 300
87
            | 1200
88
            | 1800
89
            | 3600
90
            | 7200
91
            | 10800
92
            | 14400
93
            | 18000
94
            | 28800
95
            | 43200
96
            | 57600
97
            | 72000
98
            | 86400
99
            | 172800
100
            | 259200
101
            | 345600
102
            | 432000
103
            | 691200
104
            | 1382400
105
            | 2073600
106
            | 2678400
107
            | 5356800
108
            | 16070400
109
            | 31536000;
110
          [k: string]: unknown;
111
        })
112
      | ({
113
          editable?: true | false;
114
          id: string;
115
          modified_on?: string;
116
          value: { [k: string]: unknown };
117
          [k: string]: unknown;
118
        } & {
119
          id?: "browser_check";
120
          value?: "on" | "off";
121
          [k: string]: unknown;
122
        })
123
      | ({
124
          editable?: true | false;
125
          id: string;
126
          modified_on?: string;
127
          value: { [k: string]: unknown };
128
          [k: string]: unknown;
129
        } & {
130
          id?: "cache_level";
131
          value?: "aggressive" | "basic" | "simplified";
132
          [k: string]: unknown;
133
        })
134
      | ({
135
          editable?: true | false;
136
          id: string;
137
          modified_on?: string;
138
          value: { [k: string]: unknown };
139
          [k: string]: unknown;
140
        } & {
141
          id?: "challenge_ttl";
142
          value?:
143
            | 300
144
            | 900
145
            | 1800
146
            | 2700
147
            | 3600
148
            | 7200
149
            | 10800
150
            | 14400
151
            | 28800
152
            | 57600
153
            | 86400
154
            | 604800
155
            | 2592000
156
            | 31536000;
157
          [k: string]: unknown;
158
        })
159
      | ({
160
          editable?: true | false;
161
          id: string;
162
          modified_on?: string;
163
          value: { [k: string]: unknown };
164
          [k: string]: unknown;
165
        } & { id?: "ciphers"; value?: string[]; [k: string]: unknown })
166
      | ({
167
          editable?: true | false;
168
          id: string;
169
          modified_on?: string;
170
          value: { [k: string]: unknown };
171
          [k: string]: unknown;
172
        } & {
173
          id?: "cname_flattening";
174
          value?: "flatten_at_root" | "flatten_all";
175
          [k: string]: unknown;
176
        })
177
      | ({
178
          editable?: true | false;
179
          id: string;
180
          modified_on?: string;
181
          value: { [k: string]: unknown };
182
          [k: string]: unknown;
183
        } & {
184
          id?: "development_mode";
185
          time_remaining?: number;
186
          value?: "on" | "off";
187
          [k: string]: unknown;
188
        })
189
      | ({
190
          editable?: true | false;
191
          id: string;
192
          modified_on?: string;
193
          value: { [k: string]: unknown };
194
          [k: string]: unknown;
195
        } & { id?: "early_hints"; value?: "on" | "off"; [k: string]: unknown })
196
      | ({
197
          editable?: true | false;
198
          id: string;
199
          modified_on?: string;
200
          value: { [k: string]: unknown };
201
          [k: string]: unknown;
202
        } & {
203
          id?: "edge_cache_ttl";
204
          value?:
205
            | 30
206
            | 60
207
            | 300
208
            | 1200
209
            | 1800
210
            | 3600
211
            | 7200
212
            | 10800
213
            | 14400
214
            | 18000
215
            | 28800
216
            | 43200
217
            | 57600
218
            | 72000
219
            | 86400
220
            | 172800
221
            | 259200
222
            | 345600
223
            | 432000
224
            | 518400
225
            | 604800;
226
          [k: string]: unknown;
227
        })
228
      | ({
229
          editable?: true | false;
230
          id: string;
231
          modified_on?: string;
232
          value: { [k: string]: unknown };
233
          [k: string]: unknown;
234
        } & {
235
          id?: "email_obfuscation";
236
          value?: "on" | "off";
237
          [k: string]: unknown;
238
        })
239
      | ({
240
          editable?: true | false;
241
          id: string;
242
          modified_on?: string;
243
          value: { [k: string]: unknown };
244
          [k: string]: unknown;
245
        } & {
246
          id?: "h2_prioritization";
247
          value?: "on" | "off" | "custom";
248
          [k: string]: unknown;
249
        })
250
      | ({
251
          editable?: true | false;
252
          id: string;
253
          modified_on?: string;
254
          value: { [k: string]: unknown };
255
          [k: string]: unknown;
256
        } & {
257
          id?: "hotlink_protection";
258
          value?: "on" | "off";
259
          [k: string]: unknown;
260
        })
261
      | ({
262
          editable?: true | false;
263
          id: string;
264
          modified_on?: string;
265
          value: { [k: string]: unknown };
266
          [k: string]: unknown;
267
        } & { id?: "http2"; value?: "on" | "off"; [k: string]: unknown })
268
      | ({
269
          editable?: true | false;
270
          id: string;
271
          modified_on?: string;
272
          value: { [k: string]: unknown };
273
          [k: string]: unknown;
274
        } & { id?: "http3"; value?: "on" | "off"; [k: string]: unknown })
275
      | ({
276
          editable?: true | false;
277
          id: string;
278
          modified_on?: string;
279
          value: { [k: string]: unknown };
280
          [k: string]: unknown;
281
        } & {
282
          id?: "image_resizing";
283
          value?: "on" | "off" | "open";
284
          [k: string]: unknown;
285
        })
286
      | ({
287
          editable?: true | false;
288
          id: string;
289
          modified_on?: string;
290
          value: { [k: string]: unknown };
291
          [k: string]: unknown;
292
        } & {
293
          id?: "ip_geolocation";
294
          value?: "on" | "off";
295
          [k: string]: unknown;
296
        })
297
      | ({
298
          editable?: true | false;
299
          id: string;
300
          modified_on?: string;
301
          value: { [k: string]: unknown };
302
          [k: string]: unknown;
303
        } & { id?: "ipv6"; value?: "off" | "on"; [k: string]: unknown })
304
      | ({
305
          editable?: true | false;
306
          id: string;
307
          modified_on?: string;
308
          value: { [k: string]: unknown };
309
          [k: string]: unknown;
310
        } & {
311
          id?: "max_upload";
312
          value?: 100 | 200 | 500;
313
          [k: string]: unknown;
314
        })
315
      | ({
316
          editable?: true | false;
317
          id: string;
318
          modified_on?: string;
319
          value: { [k: string]: unknown };
320
          [k: string]: unknown;
321
        } & {
322
          id?: "min_tls_version";
323
          value?: "1.0" | "1.1" | "1.2" | "1.3";
324
          [k: string]: unknown;
325
        } & string)
326
      | ({
327
          editable?: true | false;
328
          id: string;
329
          modified_on?: string;
330
          value: { [k: string]: unknown };
331
          [k: string]: unknown;
332
        } & {
333
          id?: "minify";
334
          value?: {
335
            css?: "on" | "off";
336
            html?: "on" | "off";
337
            js?: "on" | "off";
338
            [k: string]: unknown;
339
          };
340
          [k: string]: unknown;
341
        })
342
      | ({
343
          editable?: true | false;
344
          id: string;
345
          modified_on?: string;
346
          value: { [k: string]: unknown };
347
          [k: string]: unknown;
348
        } & { id?: "mirage"; value?: "on" | "off"; [k: string]: unknown })
349
      | ({
350
          editable?: true | false;
351
          id: string;
352
          modified_on?: string;
353
          value: { [k: string]: unknown };
354
          [k: string]: unknown;
355
        } & {
356
          id?: "mobile_redirect";
357
          value?: {
358
            mobile_subdomain?: string;
359
            status?: "on" | "off";
360
            strip_uri?: boolean;
361
            [k: string]: unknown;
362
          };
363
          [k: string]: unknown;
364
        })
365
      | ({
366
          editable?: true | false;
367
          id: string;
368
          modified_on?: string;
369
          value: { [k: string]: unknown };
370
          [k: string]: unknown;
371
        } & {
372
          id?: "nel";
373
          value?: { enabled?: boolean; [k: string]: unknown };
374
          [k: string]: unknown;
375
        })
376
      | ({
377
          editable?: true | false;
378
          id: string;
379
          modified_on?: string;
380
          value: { [k: string]: unknown };
381
          [k: string]: unknown;
382
        } & {
383
          id?: "opportunistic_encryption";
384
          value?: "on" | "off";
385
          [k: string]: unknown;
386
        })
387
      | ({
388
          editable?: true | false;
389
          id: string;
390
          modified_on?: string;
391
          value: { [k: string]: unknown };
392
          [k: string]: unknown;
393
        } & {
394
          id?: "opportunistic_onion";
395
          value?: "on" | "off";
396
          [k: string]: unknown;
397
        } & string)
398
      | ({
399
          editable?: true | false;
400
          id: string;
401
          modified_on?: string;
402
          value: { [k: string]: unknown };
403
          [k: string]: unknown;
404
        } & {
405
          id?: "orange_to_orange";
406
          value?: "on" | "off";
407
          [k: string]: unknown;
408
        })
409
      | ({
410
          editable?: true | false;
411
          id: string;
412
          modified_on?: string;
413
          value: { [k: string]: unknown };
414
          [k: string]: unknown;
415
        } & {
416
          id?: "origin_error_page_pass_thru";
417
          value?: "on" | "off";
418
          [k: string]: unknown;
419
        } & string)
420
      | {
421
          id: "origin_max_http_version";
422
          modified_on?: string;
423
          [k: string]: unknown;
424
        }
425
      | ({
426
          editable?: true | false;
427
          id: string;
428
          modified_on?: string;
429
          value: { [k: string]: unknown };
430
          [k: string]: unknown;
431
        } & {
432
          id?: "polish";
433
          value?: "off" | "lossless" | "lossy";
434
          [k: string]: unknown;
435
        })
436
      | ({
437
          editable?: true | false;
438
          id: string;
439
          modified_on?: string;
440
          value: { [k: string]: unknown };
441
          [k: string]: unknown;
442
        } & {
443
          id?: "prefetch_preload";
444
          value?: "on" | "off";
445
          [k: string]: unknown;
446
        } & string)
447
      | ({
448
          editable?: true | false;
449
          id: string;
450
          modified_on?: string;
451
          value: { [k: string]: unknown };
452
          [k: string]: unknown;
453
        } & { id?: "proxy_read_timeout"; value?: number; [k: string]: unknown })
454
      | ({
455
          editable?: true | false;
456
          id: string;
457
          modified_on?: string;
458
          value: { [k: string]: unknown };
459
          [k: string]: unknown;
460
        } & {
461
          id?: "pseudo_ipv4";
462
          value?: "off" | "add_header" | "overwrite_header";
463
          [k: string]: unknown;
464
        })
465
      | ({
466
          editable?: true | false;
467
          id: string;
468
          modified_on?: string;
469
          value: { [k: string]: unknown };
470
          [k: string]: unknown;
471
        } & {
472
          id?: "response_buffering";
473
          value?: "on" | "off";
474
          [k: string]: unknown;
475
        } & string)
476
      | ({
477
          editable?: true | false;
478
          id: string;
479
          modified_on?: string;
480
          value: { [k: string]: unknown };
481
          [k: string]: unknown;
482
        } & {
483
          id?: "rocket_loader";
484
          value?: "on" | "off";
485
          [k: string]: unknown;
486
        })
487
      | ({
488
          editable?: true | false;
489
          id: string;
490
          modified_on?: string;
491
          value: { [k: string]: unknown };
492
          [k: string]: unknown;
493
        } & {
494
          id?: "automatic_platform_optimization";
495
          value?: {
496
            cache_by_device_type: boolean;
497
            cf: boolean;
498
            enabled: boolean;
499
            hostnames: string[];
500
            wordpress: boolean;
501
            wp_plugin: boolean;
502
            [k: string]: unknown;
503
          };
504
          [k: string]: unknown;
505
        })
506
      | ({
507
          editable?: true | false;
508
          id: string;
509
          modified_on?: string;
510
          value: { [k: string]: unknown };
511
          [k: string]: unknown;
512
        } & {
513
          id?: "security_header";
514
          value?: {
515
            strict_transport_security?: {
516
              enabled?: boolean;
517
              include_subdomains?: boolean;
518
              max_age?: number;
519
              nosniff?: boolean;
520
              [k: string]: unknown;
521
            };
522
            [k: string]: unknown;
523
          };
524
          [k: string]: unknown;
525
        })
526
      | ({
527
          editable?: true | false;
528
          id: string;
529
          modified_on?: string;
530
          value: { [k: string]: unknown };
531
          [k: string]: unknown;
532
        } & {
533
          id?: "security_level";
534
          value?:
535
            | "off"
536
            | "essentially_off"
537
            | "low"
538
            | "medium"
539
            | "high"
540
            | "under_attack";
541
          [k: string]: unknown;
542
        })
543
      | ({
544
          editable?: true | false;
545
          id: string;
546
          modified_on?: string;
547
          value: { [k: string]: unknown };
548
          [k: string]: unknown;
549
        } & {
550
          id?: "server_side_exclude";
551
          value?: "on" | "off";
552
          [k: string]: unknown;
553
        })
554
      | ({
555
          editable?: true | false;
556
          id: string;
557
          modified_on?: string;
558
          value: { [k: string]: unknown };
559
          [k: string]: unknown;
560
        } & { id?: "sha1_support"; value?: "off" | "on"; [k: string]: unknown })
561
      | ({
562
          editable?: true | false;
563
          id: string;
564
          modified_on?: string;
565
          value: { [k: string]: unknown };
566
          [k: string]: unknown;
567
        } & {
568
          id?: "sort_query_string_for_cache";
569
          value?: "on" | "off";
570
          [k: string]: unknown;
571
        } & string)
572
      | ({
573
          editable?: true | false;
574
          id: string;
575
          modified_on?: string;
576
          value: { [k: string]: unknown };
577
          [k: string]: unknown;
578
        } & {
579
          id?: "ssl";
580
          value?: "off" | "flexible" | "full" | "strict";
581
          [k: string]: unknown;
582
        })
583
      | { enabled?: boolean; id?: "ssl_recommender"; [k: string]: unknown }
584
      | ({
585
          editable?: true | false;
586
          id: string;
587
          modified_on?: string;
588
          value: { [k: string]: unknown };
589
          [k: string]: unknown;
590
        } & { id?: "tls_1_2_only"; value?: "off" | "on"; [k: string]: unknown })
591
      | ({
592
          editable?: true | false;
593
          id: string;
594
          modified_on?: string;
595
          value: { [k: string]: unknown };
596
          [k: string]: unknown;
597
        } & {
598
          id?: "tls_1_3";
599
          value?: "on" | "off" | "zrt";
600
          [k: string]: unknown;
601
        } & string)
602
      | ({
603
          editable?: true | false;
604
          id: string;
605
          modified_on?: string;
606
          value: { [k: string]: unknown };
607
          [k: string]: unknown;
608
        } & {
609
          id?: "tls_client_auth";
610
          value?: "on" | "off";
611
          [k: string]: unknown;
612
        })
613
      | ({
614
          editable?: true | false;
615
          id: string;
616
          modified_on?: string;
617
          value: { [k: string]: unknown };
618
          [k: string]: unknown;
619
        } & {
620
          id?: "true_client_ip_header";
621
          value?: "on" | "off";
622
          [k: string]: unknown;
623
        } & string)
624
      | ({
625
          editable?: true | false;
626
          id: string;
627
          modified_on?: string;
628
          value: { [k: string]: unknown };
629
          [k: string]: unknown;
630
        } & { id?: "waf"; value?: "on" | "off"; [k: string]: unknown })
631
      | ({
632
          editable?: true | false;
633
          id: string;
634
          modified_on?: string;
635
          value: { [k: string]: unknown };
636
          [k: string]: unknown;
637
        } & { id?: "webp"; value?: "off" | "on"; [k: string]: unknown })
638
      | ({
639
          editable?: true | false;
640
          id: string;
641
          modified_on?: string;
642
          value: { [k: string]: unknown };
643
          [k: string]: unknown;
644
        } & { id?: "websockets"; value?: "off" | "on"; [k: string]: unknown })
645
    )[];
646
    [k: string]: unknown;
647
  }
648
) {
649
  const url = new URL(
650
    `https://api.cloudflare.com/client/v4/zones/${zone_identifier}/settings`
651
  );
652

653
  const response = await fetch(url, {
654
    method: "PATCH",
655
    headers: {
656
      "X-AUTH-EMAIL": auth.email,
657
      "X-AUTH-KEY": auth.key,
658
      "Content-Type": "application/json",
659
      Authorization: "Bearer " + auth.token,
660
    },
661
    body: JSON.stringify(body),
662
  });
663
  if (!response.ok) {
664
    const text = await response.text();
665
    throw new Error(`${response.status} ${text}`);
666
  }
667
  return await response.json();
668
}
669