Create an attribute
One script reply has been approved by the moderators Verified

Creates a new attribute on either an object or a list.

To create an attribute on an object, you must also have the object_configuration:read-write scope.

To create an attribute on a list, you must also have the list_configuration:read-write scope.

Created by hugo697 51 days ago
Submitted by hugo697 Bun
Verified 51 days ago
1
//native
2
type Attio = {
3
  token: string;
4
};
5
/**
6
 * Create an attribute
7
 * Creates a new attribute on either an object or a list.
8

9
To create an attribute on an object, you must also have the `object_configuration:read-write` scope.
10

11
To create an attribute on a list, you must also have the `list_configuration:read-write` scope.
12
 */
13
export async function main(
14
  auth: Attio,
15
  target: "objects" | "lists",
16
  identifier: string,
17
  body: {
18
    data: {
19
      title: string;
20
      description: string;
21
      api_slug: string;
22
      type:
23
        | "number"
24
        | "text"
25
        | "checkbox"
26
        | "currency"
27
        | "date"
28
        | "timestamp"
29
        | "rating"
30
        | "status"
31
        | "select"
32
        | "record-reference"
33
        | "actor-reference"
34
        | "location"
35
        | "domain"
36
        | "email-address"
37
        | "phone-number";
38
      is_required: false | true;
39
      is_unique: false | true;
40
      is_multiselect: false | true;
41
      default_value?:
42
        | { type: "dynamic"; template: string }
43
        | {
44
            type: "static";
45
            template:
46
              | {
47
                  referenced_actor_type: "workspace-member";
48
                  referenced_actor_id: string;
49
                }
50
              | { workspace_member_email_address: string }
51
              | { value: false | true }
52
              | { currency_value: number }
53
              | { value: string }
54
              | { domain?: string }
55
              | { email_address?: string }
56
              | { target_object: string; target_record_id: string }
57
              | {
58
                  target_object: string;
59
                  "[slug_or_id_of_matching_attribute]":
60
                    | { domain?: string }
61
                    | { email_address?: string }
62
                    | { value?: number }
63
                    | {
64
                        original_phone_number?: string;
65
                        country_code?:
66
                          | "AF"
67
                          | "AX"
68
                          | "AL"
69
                          | "DZ"
70
                          | "AS"
71
                          | "AD"
72
                          | "AO"
73
                          | "AI"
74
                          | "AQ"
75
                          | "AG"
76
                          | "AR"
77
                          | "AM"
78
                          | "AW"
79
                          | "AU"
80
                          | "AT"
81
                          | "AZ"
82
                          | "BS"
83
                          | "BH"
84
                          | "BD"
85
                          | "BB"
86
                          | "BY"
87
                          | "BE"
88
                          | "BZ"
89
                          | "BJ"
90
                          | "BM"
91
                          | "BT"
92
                          | "BO"
93
                          | "BA"
94
                          | "BW"
95
                          | "BV"
96
                          | "BR"
97
                          | "IO"
98
                          | "BN"
99
                          | "BG"
100
                          | "BF"
101
                          | "BI"
102
                          | "KH"
103
                          | "CM"
104
                          | "CA"
105
                          | "CV"
106
                          | "KY"
107
                          | "CF"
108
                          | "TD"
109
                          | "CL"
110
                          | "CN"
111
                          | "CX"
112
                          | "CC"
113
                          | "CO"
114
                          | "KM"
115
                          | "CG"
116
                          | "CD"
117
                          | "CK"
118
                          | "CR"
119
                          | "CI"
120
                          | "HR"
121
                          | "CU"
122
                          | "CW"
123
                          | "CY"
124
                          | "CZ"
125
                          | "DK"
126
                          | "DJ"
127
                          | "DM"
128
                          | "DO"
129
                          | "EC"
130
                          | "EG"
131
                          | "SV"
132
                          | "GQ"
133
                          | "ER"
134
                          | "EE"
135
                          | "ET"
136
                          | "FK"
137
                          | "FO"
138
                          | "FJ"
139
                          | "FI"
140
                          | "FR"
141
                          | "GF"
142
                          | "PF"
143
                          | "TF"
144
                          | "GA"
145
                          | "GM"
146
                          | "GE"
147
                          | "DE"
148
                          | "GH"
149
                          | "GI"
150
                          | "GR"
151
                          | "GL"
152
                          | "GD"
153
                          | "GP"
154
                          | "GU"
155
                          | "GT"
156
                          | "GG"
157
                          | "GN"
158
                          | "GW"
159
                          | "GY"
160
                          | "HT"
161
                          | "HM"
162
                          | "VA"
163
                          | "HN"
164
                          | "HK"
165
                          | "HU"
166
                          | "IS"
167
                          | "IN"
168
                          | "ID"
169
                          | "IR"
170
                          | "IQ"
171
                          | "IE"
172
                          | "IM"
173
                          | "IL"
174
                          | "IT"
175
                          | "JM"
176
                          | "JP"
177
                          | "JE"
178
                          | "JO"
179
                          | "KZ"
180
                          | "KE"
181
                          | "KI"
182
                          | "KR"
183
                          | "KW"
184
                          | "KG"
185
                          | "LA"
186
                          | "LV"
187
                          | "LB"
188
                          | "LS"
189
                          | "LR"
190
                          | "LY"
191
                          | "LI"
192
                          | "LT"
193
                          | "LU"
194
                          | "MO"
195
                          | "MK"
196
                          | "MG"
197
                          | "MW"
198
                          | "MY"
199
                          | "MV"
200
                          | "ML"
201
                          | "MT"
202
                          | "MH"
203
                          | "MQ"
204
                          | "MR"
205
                          | "MU"
206
                          | "YT"
207
                          | "MX"
208
                          | "FM"
209
                          | "MD"
210
                          | "MC"
211
                          | "MN"
212
                          | "ME"
213
                          | "MS"
214
                          | "MA"
215
                          | "MZ"
216
                          | "MM"
217
                          | "NA"
218
                          | "NR"
219
                          | "NP"
220
                          | "NL"
221
                          | "AN"
222
                          | "NC"
223
                          | "NZ"
224
                          | "NI"
225
                          | "NE"
226
                          | "NG"
227
                          | "NU"
228
                          | "NF"
229
                          | "MP"
230
                          | "NO"
231
                          | "OM"
232
                          | "PK"
233
                          | "PW"
234
                          | "PS"
235
                          | "PA"
236
                          | "PG"
237
                          | "PY"
238
                          | "PE"
239
                          | "PH"
240
                          | "PN"
241
                          | "PL"
242
                          | "PT"
243
                          | "PR"
244
                          | "QA"
245
                          | "RE"
246
                          | "RO"
247
                          | "RU"
248
                          | "RW"
249
                          | "BL"
250
                          | "SH"
251
                          | "KN"
252
                          | "LC"
253
                          | "MF"
254
                          | "PM"
255
                          | "VC"
256
                          | "WS"
257
                          | "SM"
258
                          | "ST"
259
                          | "SA"
260
                          | "SN"
261
                          | "SS"
262
                          | "RS"
263
                          | "SC"
264
                          | "SL"
265
                          | "SG"
266
                          | "SK"
267
                          | "SI"
268
                          | "SB"
269
                          | "SO"
270
                          | "ZA"
271
                          | "GS"
272
                          | "ES"
273
                          | "LK"
274
                          | "SD"
275
                          | "SR"
276
                          | "SJ"
277
                          | "SZ"
278
                          | "SE"
279
                          | "CH"
280
                          | "SY"
281
                          | "TW"
282
                          | "TJ"
283
                          | "TZ"
284
                          | "TH"
285
                          | "TL"
286
                          | "TG"
287
                          | "TK"
288
                          | "TO"
289
                          | "TT"
290
                          | "TN"
291
                          | "TR"
292
                          | "TM"
293
                          | "TC"
294
                          | "TV"
295
                          | "UG"
296
                          | "UA"
297
                          | "AE"
298
                          | "GB"
299
                          | "US"
300
                          | "UM"
301
                          | "UY"
302
                          | "UZ"
303
                          | "VU"
304
                          | "VE"
305
                          | "VN"
306
                          | "VG"
307
                          | "VI"
308
                          | "WF"
309
                          | "EH"
310
                          | "YE"
311
                          | "ZM"
312
                          | "ZW";
313
                      }
314
                    | { value?: string }[];
315
                }
316
              | {
317
                  interaction_type:
318
                    | "calendar-event"
319
                    | "call"
320
                    | "chat-thread"
321
                    | "email"
322
                    | "in-person-meeting"
323
                    | "meeting";
324
                  interacted_at: string;
325
                  owner_actor: {
326
                    id?: string;
327
                    type?: "workspace-member" | "api-token" | "system" | "app";
328
                  };
329
                }
330
              | {
331
                  line_1: string;
332
                  line_2: string;
333
                  line_3: string;
334
                  line_4: string;
335
                  locality: string;
336
                  region: string;
337
                  postcode: string;
338
                  country_code:
339
                    | "AF"
340
                    | "AX"
341
                    | "AL"
342
                    | "DZ"
343
                    | "AS"
344
                    | "AD"
345
                    | "AO"
346
                    | "AI"
347
                    | "AQ"
348
                    | "AG"
349
                    | "AR"
350
                    | "AM"
351
                    | "AW"
352
                    | "AU"
353
                    | "AT"
354
                    | "AZ"
355
                    | "BS"
356
                    | "BH"
357
                    | "BD"
358
                    | "BB"
359
                    | "BY"
360
                    | "BE"
361
                    | "BZ"
362
                    | "BJ"
363
                    | "BM"
364
                    | "BT"
365
                    | "BO"
366
                    | "BA"
367
                    | "BW"
368
                    | "BV"
369
                    | "BR"
370
                    | "IO"
371
                    | "BN"
372
                    | "BG"
373
                    | "BF"
374
                    | "BI"
375
                    | "KH"
376
                    | "CM"
377
                    | "CA"
378
                    | "CV"
379
                    | "KY"
380
                    | "CF"
381
                    | "TD"
382
                    | "CL"
383
                    | "CN"
384
                    | "CX"
385
                    | "CC"
386
                    | "CO"
387
                    | "KM"
388
                    | "CG"
389
                    | "CD"
390
                    | "CK"
391
                    | "CR"
392
                    | "CI"
393
                    | "HR"
394
                    | "CU"
395
                    | "CW"
396
                    | "CY"
397
                    | "CZ"
398
                    | "DK"
399
                    | "DJ"
400
                    | "DM"
401
                    | "DO"
402
                    | "EC"
403
                    | "EG"
404
                    | "SV"
405
                    | "GQ"
406
                    | "ER"
407
                    | "EE"
408
                    | "ET"
409
                    | "FK"
410
                    | "FO"
411
                    | "FJ"
412
                    | "FI"
413
                    | "FR"
414
                    | "GF"
415
                    | "PF"
416
                    | "TF"
417
                    | "GA"
418
                    | "GM"
419
                    | "GE"
420
                    | "DE"
421
                    | "GH"
422
                    | "GI"
423
                    | "GR"
424
                    | "GL"
425
                    | "GD"
426
                    | "GP"
427
                    | "GU"
428
                    | "GT"
429
                    | "GG"
430
                    | "GN"
431
                    | "GW"
432
                    | "GY"
433
                    | "HT"
434
                    | "HM"
435
                    | "VA"
436
                    | "HN"
437
                    | "HK"
438
                    | "HU"
439
                    | "IS"
440
                    | "IN"
441
                    | "ID"
442
                    | "IR"
443
                    | "IQ"
444
                    | "IE"
445
                    | "IM"
446
                    | "IL"
447
                    | "IT"
448
                    | "JM"
449
                    | "JP"
450
                    | "JE"
451
                    | "JO"
452
                    | "KZ"
453
                    | "KE"
454
                    | "KI"
455
                    | "KR"
456
                    | "KW"
457
                    | "KG"
458
                    | "LA"
459
                    | "LV"
460
                    | "LB"
461
                    | "LS"
462
                    | "LR"
463
                    | "LY"
464
                    | "LI"
465
                    | "LT"
466
                    | "LU"
467
                    | "MO"
468
                    | "MK"
469
                    | "MG"
470
                    | "MW"
471
                    | "MY"
472
                    | "MV"
473
                    | "ML"
474
                    | "MT"
475
                    | "MH"
476
                    | "MQ"
477
                    | "MR"
478
                    | "MU"
479
                    | "YT"
480
                    | "MX"
481
                    | "FM"
482
                    | "MD"
483
                    | "MC"
484
                    | "MN"
485
                    | "ME"
486
                    | "MS"
487
                    | "MA"
488
                    | "MZ"
489
                    | "MM"
490
                    | "NA"
491
                    | "NR"
492
                    | "NP"
493
                    | "NL"
494
                    | "AN"
495
                    | "NC"
496
                    | "NZ"
497
                    | "NI"
498
                    | "NE"
499
                    | "NG"
500
                    | "NU"
501
                    | "NF"
502
                    | "MP"
503
                    | "NO"
504
                    | "OM"
505
                    | "PK"
506
                    | "PW"
507
                    | "PS"
508
                    | "PA"
509
                    | "PG"
510
                    | "PY"
511
                    | "PE"
512
                    | "PH"
513
                    | "PN"
514
                    | "PL"
515
                    | "PT"
516
                    | "PR"
517
                    | "QA"
518
                    | "RE"
519
                    | "RO"
520
                    | "RU"
521
                    | "RW"
522
                    | "BL"
523
                    | "SH"
524
                    | "KN"
525
                    | "LC"
526
                    | "MF"
527
                    | "PM"
528
                    | "VC"
529
                    | "WS"
530
                    | "SM"
531
                    | "ST"
532
                    | "SA"
533
                    | "SN"
534
                    | "SS"
535
                    | "RS"
536
                    | "SC"
537
                    | "SL"
538
                    | "SG"
539
                    | "SK"
540
                    | "SI"
541
                    | "SB"
542
                    | "SO"
543
                    | "ZA"
544
                    | "GS"
545
                    | "ES"
546
                    | "LK"
547
                    | "SD"
548
                    | "SR"
549
                    | "SJ"
550
                    | "SZ"
551
                    | "SE"
552
                    | "CH"
553
                    | "SY"
554
                    | "TW"
555
                    | "TJ"
556
                    | "TZ"
557
                    | "TH"
558
                    | "TL"
559
                    | "TG"
560
                    | "TK"
561
                    | "TO"
562
                    | "TT"
563
                    | "TN"
564
                    | "TR"
565
                    | "TM"
566
                    | "TC"
567
                    | "TV"
568
                    | "UG"
569
                    | "UA"
570
                    | "AE"
571
                    | "GB"
572
                    | "US"
573
                    | "UM"
574
                    | "UY"
575
                    | "UZ"
576
                    | "VU"
577
                    | "VE"
578
                    | "VN"
579
                    | "VG"
580
                    | "VI"
581
                    | "WF"
582
                    | "EH"
583
                    | "YE"
584
                    | "ZM"
585
                    | "ZW";
586
                  latitude: string;
587
                  longitude: string;
588
                }
589
              | { value: number }
590
              | { first_name?: string; last_name?: string; full_name?: string }
591
              | {
592
                  original_phone_number: string;
593
                  country_code?:
594
                    | "AF"
595
                    | "AX"
596
                    | "AL"
597
                    | "DZ"
598
                    | "AS"
599
                    | "AD"
600
                    | "AO"
601
                    | "AI"
602
                    | "AQ"
603
                    | "AG"
604
                    | "AR"
605
                    | "AM"
606
                    | "AW"
607
                    | "AU"
608
                    | "AT"
609
                    | "AZ"
610
                    | "BS"
611
                    | "BH"
612
                    | "BD"
613
                    | "BB"
614
                    | "BY"
615
                    | "BE"
616
                    | "BZ"
617
                    | "BJ"
618
                    | "BM"
619
                    | "BT"
620
                    | "BO"
621
                    | "BA"
622
                    | "BW"
623
                    | "BV"
624
                    | "BR"
625
                    | "IO"
626
                    | "BN"
627
                    | "BG"
628
                    | "BF"
629
                    | "BI"
630
                    | "KH"
631
                    | "CM"
632
                    | "CA"
633
                    | "CV"
634
                    | "KY"
635
                    | "CF"
636
                    | "TD"
637
                    | "CL"
638
                    | "CN"
639
                    | "CX"
640
                    | "CC"
641
                    | "CO"
642
                    | "KM"
643
                    | "CG"
644
                    | "CD"
645
                    | "CK"
646
                    | "CR"
647
                    | "CI"
648
                    | "HR"
649
                    | "CU"
650
                    | "CW"
651
                    | "CY"
652
                    | "CZ"
653
                    | "DK"
654
                    | "DJ"
655
                    | "DM"
656
                    | "DO"
657
                    | "EC"
658
                    | "EG"
659
                    | "SV"
660
                    | "GQ"
661
                    | "ER"
662
                    | "EE"
663
                    | "ET"
664
                    | "FK"
665
                    | "FO"
666
                    | "FJ"
667
                    | "FI"
668
                    | "FR"
669
                    | "GF"
670
                    | "PF"
671
                    | "TF"
672
                    | "GA"
673
                    | "GM"
674
                    | "GE"
675
                    | "DE"
676
                    | "GH"
677
                    | "GI"
678
                    | "GR"
679
                    | "GL"
680
                    | "GD"
681
                    | "GP"
682
                    | "GU"
683
                    | "GT"
684
                    | "GG"
685
                    | "GN"
686
                    | "GW"
687
                    | "GY"
688
                    | "HT"
689
                    | "HM"
690
                    | "VA"
691
                    | "HN"
692
                    | "HK"
693
                    | "HU"
694
                    | "IS"
695
                    | "IN"
696
                    | "ID"
697
                    | "IR"
698
                    | "IQ"
699
                    | "IE"
700
                    | "IM"
701
                    | "IL"
702
                    | "IT"
703
                    | "JM"
704
                    | "JP"
705
                    | "JE"
706
                    | "JO"
707
                    | "KZ"
708
                    | "KE"
709
                    | "KI"
710
                    | "KR"
711
                    | "KW"
712
                    | "KG"
713
                    | "LA"
714
                    | "LV"
715
                    | "LB"
716
                    | "LS"
717
                    | "LR"
718
                    | "LY"
719
                    | "LI"
720
                    | "LT"
721
                    | "LU"
722
                    | "MO"
723
                    | "MK"
724
                    | "MG"
725
                    | "MW"
726
                    | "MY"
727
                    | "MV"
728
                    | "ML"
729
                    | "MT"
730
                    | "MH"
731
                    | "MQ"
732
                    | "MR"
733
                    | "MU"
734
                    | "YT"
735
                    | "MX"
736
                    | "FM"
737
                    | "MD"
738
                    | "MC"
739
                    | "MN"
740
                    | "ME"
741
                    | "MS"
742
                    | "MA"
743
                    | "MZ"
744
                    | "MM"
745
                    | "NA"
746
                    | "NR"
747
                    | "NP"
748
                    | "NL"
749
                    | "AN"
750
                    | "NC"
751
                    | "NZ"
752
                    | "NI"
753
                    | "NE"
754
                    | "NG"
755
                    | "NU"
756
                    | "NF"
757
                    | "MP"
758
                    | "NO"
759
                    | "OM"
760
                    | "PK"
761
                    | "PW"
762
                    | "PS"
763
                    | "PA"
764
                    | "PG"
765
                    | "PY"
766
                    | "PE"
767
                    | "PH"
768
                    | "PN"
769
                    | "PL"
770
                    | "PT"
771
                    | "PR"
772
                    | "QA"
773
                    | "RE"
774
                    | "RO"
775
                    | "RU"
776
                    | "RW"
777
                    | "BL"
778
                    | "SH"
779
                    | "KN"
780
                    | "LC"
781
                    | "MF"
782
                    | "PM"
783
                    | "VC"
784
                    | "WS"
785
                    | "SM"
786
                    | "ST"
787
                    | "SA"
788
                    | "SN"
789
                    | "SS"
790
                    | "RS"
791
                    | "SC"
792
                    | "SL"
793
                    | "SG"
794
                    | "SK"
795
                    | "SI"
796
                    | "SB"
797
                    | "SO"
798
                    | "ZA"
799
                    | "GS"
800
                    | "ES"
801
                    | "LK"
802
                    | "SD"
803
                    | "SR"
804
                    | "SJ"
805
                    | "SZ"
806
                    | "SE"
807
                    | "CH"
808
                    | "SY"
809
                    | "TW"
810
                    | "TJ"
811
                    | "TZ"
812
                    | "TH"
813
                    | "TL"
814
                    | "TG"
815
                    | "TK"
816
                    | "TO"
817
                    | "TT"
818
                    | "TN"
819
                    | "TR"
820
                    | "TM"
821
                    | "TC"
822
                    | "TV"
823
                    | "UG"
824
                    | "UA"
825
                    | "AE"
826
                    | "GB"
827
                    | "US"
828
                    | "UM"
829
                    | "UY"
830
                    | "UZ"
831
                    | "VU"
832
                    | "VE"
833
                    | "VN"
834
                    | "VG"
835
                    | "VI"
836
                    | "WF"
837
                    | "EH"
838
                    | "YE"
839
                    | "ZM"
840
                    | "ZW";
841
                }
842
              | { status: string }
843
              | { value: number }
844
              | { option: string }
845
              | { value: string }
846
              | { value: string }[];
847
          };
848
      config: {
849
        currency?: {
850
          default_currency_code:
851
            | "AUD"
852
            | "BRL"
853
            | "BEL"
854
            | "CAD"
855
            | "CNY"
856
            | "COP"
857
            | "CZK"
858
            | "DKK"
859
            | "EUR"
860
            | "HKD"
861
            | "ISK"
862
            | "INR"
863
            | "ILS"
864
            | "JPY"
865
            | "KRW"
866
            | "MYR"
867
            | "MXN"
868
            | "NTD"
869
            | "NZD"
870
            | "NGN"
871
            | "NOK"
872
            | "PEN"
873
            | "PHP"
874
            | "PLN"
875
            | "GBP"
876
            | "SGD"
877
            | "ZAR"
878
            | "SEK"
879
            | "CHF"
880
            | "AED"
881
            | "USD";
882
          display_type: "symbol" | "code" | "name" | "narrowSymbol";
883
        };
884
        record_reference?: { allowed_objects: string[] };
885
      };
886
    };
887
  },
888
) {
889
  const url = new URL(
890
    `https://api.attio.com/v2/${target}/${identifier}/attributes`,
891
  );
892

893
  const response = await fetch(url, {
894
    method: "POST",
895
    headers: {
896
      "Content-Type": "application/json",
897
      Authorization: "Bearer " + auth.token,
898
    },
899
    body: JSON.stringify(body),
900
  });
901
  if (!response.ok) {
902
    const text = await response.text();
903
    throw new Error(`${response.status} ${text}`);
904
  }
905
  return await response.json();
906
}
907