1 | |
2 | type Klaviyo = { |
3 | apiKey: string; |
4 | }; |
5 | |
6 | * Create Segment |
7 | * Create a segment.*Rate limits*:Burst: `1/s`Steady: `15/m`Daily: `100/d` |
8 |
|
9 | */ |
10 | export async function main( |
11 | auth: Klaviyo, |
12 | revision: string, |
13 | body: { |
14 | data: { |
15 | type: "segment"; |
16 | attributes: { |
17 | name: string; |
18 | definition: { |
19 | condition_groups: { |
20 | conditions: |
21 | | { |
22 | type: "profile-group-membership"; |
23 | is_member: true; |
24 | group_ids: string[]; |
25 | timeframe_filter?: |
26 | | { |
27 | type: "date"; |
28 | operator: "after" | "before"; |
29 | date: string; |
30 | } |
31 | | { |
32 | type: "date"; |
33 | operator: "between-static"; |
34 | start: string; |
35 | end: string; |
36 | } |
37 | | { |
38 | type: "date"; |
39 | operator: "at-least" | "in-the-last" | "in-the-next"; |
40 | unit: "day" | "hour" | "week"; |
41 | quantity: number; |
42 | } |
43 | | { |
44 | type: "date"; |
45 | operator: "between"; |
46 | start: number; |
47 | end: number; |
48 | unit: "day" | "hour" | "week"; |
49 | }; |
50 | } |
51 | | { |
52 | type: "profile-group-membership"; |
53 | is_member: false; |
54 | group_ids: string[]; |
55 | } |
56 | | { |
57 | type: "profile-metric"; |
58 | metric_id: string; |
59 | measurement: "count" | "sum"; |
60 | measurement_filter: { |
61 | type: "numeric"; |
62 | operator: |
63 | | "equals" |
64 | | "greater-than" |
65 | | "greater-than-or-equal" |
66 | | "less-than" |
67 | | "less-than-or-equal" |
68 | | "not-equals"; |
69 | value: number; |
70 | }; |
71 | timeframe_filter: |
72 | | { |
73 | type: "date"; |
74 | operator: "after" | "before"; |
75 | date: string; |
76 | } |
77 | | { |
78 | type: "date"; |
79 | operator: "between-static"; |
80 | start: string; |
81 | end: string; |
82 | } |
83 | | { |
84 | type: "date"; |
85 | operator: "at-least" | "in-the-last" | "in-the-next"; |
86 | unit: "day" | "hour" | "week"; |
87 | quantity: number; |
88 | } |
89 | | { |
90 | type: "date"; |
91 | operator: "anniversary-last" | "anniversary-next"; |
92 | unit: "day" | "hour" | "week"; |
93 | quantity: number; |
94 | } |
95 | | { |
96 | type: "date"; |
97 | operator: "between"; |
98 | start: number; |
99 | end: number; |
100 | unit: "day" | "hour" | "week"; |
101 | } |
102 | | { type: "date"; operator: "alltime" }; |
103 | metric_filters?: { |
104 | property: string; |
105 | filter?: |
106 | | { |
107 | type: "string"; |
108 | operator: |
109 | | "equals" |
110 | | "not-equals" |
111 | | "contains" |
112 | | "ends-with" |
113 | | "not-contains" |
114 | | "not-ends-with" |
115 | | "not-starts-with" |
116 | | "starts-with"; |
117 | value: string; |
118 | } |
119 | | { |
120 | type: "string"; |
121 | operator: "in" | "not-in"; |
122 | value: string[]; |
123 | } |
124 | | { type: "existence"; operator: "is-set" | "not-set" } |
125 | | { |
126 | type: "list"; |
127 | operator: |
128 | | "contains-all" |
129 | | "contains-any" |
130 | | "not-contains-all" |
131 | | "not-contains-any"; |
132 | value: string[]; |
133 | } |
134 | | { |
135 | type: "list"; |
136 | operator: |
137 | | "length-equals" |
138 | | "length-greater-than" |
139 | | "length-greater-than-or-equal" |
140 | | "length-less-than" |
141 | | "length-less-than-or-equal"; |
142 | value: number; |
143 | } |
144 | | { |
145 | type: "list"; |
146 | operator: |
147 | | "contains-substring" |
148 | | "not-contains-substring"; |
149 | value: string; |
150 | } |
151 | | { |
152 | type: "boolean"; |
153 | operator: "equals"; |
154 | value: false | true; |
155 | } |
156 | | { |
157 | type: "numeric"; |
158 | operator: |
159 | | "equals" |
160 | | "greater-than" |
161 | | "greater-than-or-equal" |
162 | | "less-than" |
163 | | "less-than-or-equal" |
164 | | "not-equals"; |
165 | value: number; |
166 | }; |
167 | }[]; |
168 | } |
169 | | { |
170 | type: "profile-marketing-consent"; |
171 | consent: |
172 | | { |
173 | channel: "email"; |
174 | can_receive_marketing: true; |
175 | consent_status: |
176 | | { subscription: "any" } |
177 | | { |
178 | subscription: "subscribed"; |
179 | filters?: |
180 | | { |
181 | field: "is_double_opt_in"; |
182 | filter: { |
183 | type: "boolean"; |
184 | operator: "equals"; |
185 | value: false | true; |
186 | }; |
187 | } |
188 | | { |
189 | field: "status_date"; |
190 | filter: |
191 | | { |
192 | type: "date"; |
193 | operator: "after" | "before"; |
194 | date: string; |
195 | } |
196 | | { |
197 | type: "date"; |
198 | operator: "between-static"; |
199 | start: string; |
200 | end: string; |
201 | } |
202 | | { |
203 | type: "date"; |
204 | operator: |
205 | | "at-least" |
206 | | "in-the-last" |
207 | | "in-the-next"; |
208 | unit: "day" | "hour" | "week"; |
209 | quantity: number; |
210 | } |
211 | | { |
212 | type: "date"; |
213 | operator: |
214 | | "anniversary-last" |
215 | | "anniversary-next"; |
216 | unit: "day" | "hour" | "week"; |
217 | quantity: number; |
218 | } |
219 | | { |
220 | type: "date"; |
221 | operator: "between"; |
222 | start: number; |
223 | end: number; |
224 | unit: "day" | "hour" | "week"; |
225 | } |
226 | | { |
227 | type: "date"; |
228 | operator: "calendar-month"; |
229 | value: number; |
230 | } |
231 | | { |
232 | type: "date"; |
233 | operator: |
234 | | "anniversary" |
235 | | "anniversary-month"; |
236 | }; |
237 | } |
238 | | { |
239 | field: "custom_source"; |
240 | filter: { |
241 | type: "string"; |
242 | operator: "equals"; |
243 | value: string; |
244 | }; |
245 | } |
246 | | { |
247 | field: "method"; |
248 | method: "form"; |
249 | filter?: { |
250 | type: "string"; |
251 | operator: "in"; |
252 | value: string[]; |
253 | }; |
254 | } |
255 | | { |
256 | field: "method"; |
257 | method: "preference_page"; |
258 | filter?: { |
259 | type: "string"; |
260 | operator: "equals"; |
261 | value: string; |
262 | }; |
263 | } |
264 | | { |
265 | field: "method"; |
266 | method: "api"; |
267 | filter?: { |
268 | type: "string"; |
269 | operator: "in"; |
270 | value: string[]; |
271 | }; |
272 | } |
273 | | { field: "method"; method: "inbound_message" } |
274 | | { field: "method"; method: "back_in_stock" } |
275 | | { field: "method"; method: "sftp" } |
276 | | { |
277 | field: "method"; |
278 | method: "manual_import"; |
279 | filter?: { |
280 | type: "string"; |
281 | operator: "in"; |
282 | value: string[]; |
283 | }; |
284 | } |
285 | | { |
286 | field: "method"; |
287 | method: "manual_add"; |
288 | filter?: { |
289 | type: "string"; |
290 | operator: "in"; |
291 | value: string[]; |
292 | }; |
293 | } |
294 | | { |
295 | field: "method"; |
296 | method: "integration"; |
297 | filter: { |
298 | type: "string"; |
299 | operator: "in"; |
300 | value: "shopify"[]; |
301 | }; |
302 | }[]; |
303 | } |
304 | | { subscription: "never_subscribed" }; |
305 | } |
306 | | { |
307 | channel: "email"; |
308 | can_receive_marketing: false; |
309 | consent_status: |
310 | | { |
311 | subscription: "any"; |
312 | filters?: |
313 | | { |
314 | field: "bounce_date"; |
315 | filter: |
316 | | { |
317 | type: "date"; |
318 | operator: "after" | "before"; |
319 | date: string; |
320 | } |
321 | | { |
322 | type: "date"; |
323 | operator: "between-static"; |
324 | start: string; |
325 | end: string; |
326 | } |
327 | | { |
328 | type: "date"; |
329 | operator: |
330 | | "at-least" |
331 | | "in-the-last" |
332 | | "in-the-next"; |
333 | unit: "day" | "hour" | "week"; |
334 | quantity: number; |
335 | } |
336 | | { |
337 | type: "date"; |
338 | operator: |
339 | | "anniversary-last" |
340 | | "anniversary-next"; |
341 | unit: "day" | "hour" | "week"; |
342 | quantity: number; |
343 | } |
344 | | { |
345 | type: "date"; |
346 | operator: "between"; |
347 | start: number; |
348 | end: number; |
349 | unit: "day" | "hour" | "week"; |
350 | } |
351 | | { |
352 | type: "date"; |
353 | operator: "calendar-month"; |
354 | value: number; |
355 | } |
356 | | { |
357 | type: "date"; |
358 | operator: |
359 | | "anniversary" |
360 | | "anniversary-month"; |
361 | } |
362 | | { |
363 | type: "existence"; |
364 | operator: "is-set"; |
365 | }; |
366 | } |
367 | | { |
368 | field: "manual_suppression_date"; |
369 | filter: |
370 | | { |
371 | type: "date"; |
372 | operator: "after" | "before"; |
373 | date: string; |
374 | } |
375 | | { |
376 | type: "date"; |
377 | operator: "between-static"; |
378 | start: string; |
379 | end: string; |
380 | } |
381 | | { |
382 | type: "date"; |
383 | operator: |
384 | | "at-least" |
385 | | "in-the-last" |
386 | | "in-the-next"; |
387 | unit: "day" | "hour" | "week"; |
388 | quantity: number; |
389 | } |
390 | | { |
391 | type: "date"; |
392 | operator: |
393 | | "anniversary-last" |
394 | | "anniversary-next"; |
395 | unit: "day" | "hour" | "week"; |
396 | quantity: number; |
397 | } |
398 | | { |
399 | type: "date"; |
400 | operator: "between"; |
401 | start: number; |
402 | end: number; |
403 | unit: "day" | "hour" | "week"; |
404 | } |
405 | | { |
406 | type: "date"; |
407 | operator: "calendar-month"; |
408 | value: number; |
409 | } |
410 | | { |
411 | type: "date"; |
412 | operator: |
413 | | "anniversary" |
414 | | "anniversary-month"; |
415 | } |
416 | | { |
417 | type: "existence"; |
418 | operator: "is-set"; |
419 | }; |
420 | } |
421 | | { |
422 | field: "invalid_email_date"; |
423 | filter: |
424 | | { |
425 | type: "date"; |
426 | operator: "after" | "before"; |
427 | date: string; |
428 | } |
429 | | { |
430 | type: "date"; |
431 | operator: "between-static"; |
432 | start: string; |
433 | end: string; |
434 | } |
435 | | { |
436 | type: "date"; |
437 | operator: |
438 | | "at-least" |
439 | | "in-the-last" |
440 | | "in-the-next"; |
441 | unit: "day" | "hour" | "week"; |
442 | quantity: number; |
443 | } |
444 | | { |
445 | type: "date"; |
446 | operator: |
447 | | "anniversary-last" |
448 | | "anniversary-next"; |
449 | unit: "day" | "hour" | "week"; |
450 | quantity: number; |
451 | } |
452 | | { |
453 | type: "date"; |
454 | operator: "between"; |
455 | start: number; |
456 | end: number; |
457 | unit: "day" | "hour" | "week"; |
458 | } |
459 | | { |
460 | type: "date"; |
461 | operator: "calendar-month"; |
462 | value: number; |
463 | } |
464 | | { |
465 | type: "date"; |
466 | operator: |
467 | | "anniversary" |
468 | | "anniversary-month"; |
469 | } |
470 | | { |
471 | type: "existence"; |
472 | operator: "is-set"; |
473 | }; |
474 | }[]; |
475 | } |
476 | | { |
477 | subscription: "unsubscribed"; |
478 | filters?: |
479 | | { |
480 | field: "status_date"; |
481 | filter: |
482 | | { |
483 | type: "date"; |
484 | operator: "after" | "before"; |
485 | date: string; |
486 | } |
487 | | { |
488 | type: "date"; |
489 | operator: "between-static"; |
490 | start: string; |
491 | end: string; |
492 | } |
493 | | { |
494 | type: "date"; |
495 | operator: |
496 | | "at-least" |
497 | | "in-the-last" |
498 | | "in-the-next"; |
499 | unit: "day" | "hour" | "week"; |
500 | quantity: number; |
501 | } |
502 | | { |
503 | type: "date"; |
504 | operator: |
505 | | "anniversary-last" |
506 | | "anniversary-next"; |
507 | unit: "day" | "hour" | "week"; |
508 | quantity: number; |
509 | } |
510 | | { |
511 | type: "date"; |
512 | operator: "between"; |
513 | start: number; |
514 | end: number; |
515 | unit: "day" | "hour" | "week"; |
516 | } |
517 | | { |
518 | type: "date"; |
519 | operator: "calendar-month"; |
520 | value: number; |
521 | } |
522 | | { |
523 | type: "date"; |
524 | operator: |
525 | | "anniversary" |
526 | | "anniversary-month"; |
527 | }; |
528 | } |
529 | | { |
530 | field: "method"; |
531 | method: "api"; |
532 | filter?: { |
533 | type: "string"; |
534 | operator: "in"; |
535 | value: string[]; |
536 | }; |
537 | } |
538 | | { field: "method"; method: "inbound_message" } |
539 | | { field: "method"; method: "preference_page" } |
540 | | { field: "method"; method: "manual_remove" } |
541 | | { field: "method"; method: "spam_complaint" } |
542 | | { |
543 | field: "method"; |
544 | method: "mailbox_provider"; |
545 | } |
546 | | { |
547 | field: "method"; |
548 | method: "integration"; |
549 | filter: { |
550 | type: "string"; |
551 | operator: "in"; |
552 | value: "constant_contact"[]; |
553 | }; |
554 | }[] |
555 | | { |
556 | field: "bounce_date"; |
557 | filter: |
558 | | { |
559 | type: "date"; |
560 | operator: "after" | "before"; |
561 | date: string; |
562 | } |
563 | | { |
564 | type: "date"; |
565 | operator: "between-static"; |
566 | start: string; |
567 | end: string; |
568 | } |
569 | | { |
570 | type: "date"; |
571 | operator: |
572 | | "at-least" |
573 | | "in-the-last" |
574 | | "in-the-next"; |
575 | unit: "day" | "hour" | "week"; |
576 | quantity: number; |
577 | } |
578 | | { |
579 | type: "date"; |
580 | operator: |
581 | | "anniversary-last" |
582 | | "anniversary-next"; |
583 | unit: "day" | "hour" | "week"; |
584 | quantity: number; |
585 | } |
586 | | { |
587 | type: "date"; |
588 | operator: "between"; |
589 | start: number; |
590 | end: number; |
591 | unit: "day" | "hour" | "week"; |
592 | } |
593 | | { |
594 | type: "date"; |
595 | operator: "calendar-month"; |
596 | value: number; |
597 | } |
598 | | { |
599 | type: "date"; |
600 | operator: |
601 | | "anniversary" |
602 | | "anniversary-month"; |
603 | } |
604 | | { |
605 | type: "existence"; |
606 | operator: "is-set"; |
607 | }; |
608 | } |
609 | | { |
610 | field: "manual_suppression_date"; |
611 | filter: |
612 | | { |
613 | type: "date"; |
614 | operator: "after" | "before"; |
615 | date: string; |
616 | } |
617 | | { |
618 | type: "date"; |
619 | operator: "between-static"; |
620 | start: string; |
621 | end: string; |
622 | } |
623 | | { |
624 | type: "date"; |
625 | operator: |
626 | | "at-least" |
627 | | "in-the-last" |
628 | | "in-the-next"; |
629 | unit: "day" | "hour" | "week"; |
630 | quantity: number; |
631 | } |
632 | | { |
633 | type: "date"; |
634 | operator: |
635 | | "anniversary-last" |
636 | | "anniversary-next"; |
637 | unit: "day" | "hour" | "week"; |
638 | quantity: number; |
639 | } |
640 | | { |
641 | type: "date"; |
642 | operator: "between"; |
643 | start: number; |
644 | end: number; |
645 | unit: "day" | "hour" | "week"; |
646 | } |
647 | | { |
648 | type: "date"; |
649 | operator: "calendar-month"; |
650 | value: number; |
651 | } |
652 | | { |
653 | type: "date"; |
654 | operator: |
655 | | "anniversary" |
656 | | "anniversary-month"; |
657 | } |
658 | | { |
659 | type: "existence"; |
660 | operator: "is-set"; |
661 | }; |
662 | } |
663 | | { |
664 | field: "invalid_email_date"; |
665 | filter: |
666 | | { |
667 | type: "date"; |
668 | operator: "after" | "before"; |
669 | date: string; |
670 | } |
671 | | { |
672 | type: "date"; |
673 | operator: "between-static"; |
674 | start: string; |
675 | end: string; |
676 | } |
677 | | { |
678 | type: "date"; |
679 | operator: |
680 | | "at-least" |
681 | | "in-the-last" |
682 | | "in-the-next"; |
683 | unit: "day" | "hour" | "week"; |
684 | quantity: number; |
685 | } |
686 | | { |
687 | type: "date"; |
688 | operator: |
689 | | "anniversary-last" |
690 | | "anniversary-next"; |
691 | unit: "day" | "hour" | "week"; |
692 | quantity: number; |
693 | } |
694 | | { |
695 | type: "date"; |
696 | operator: "between"; |
697 | start: number; |
698 | end: number; |
699 | unit: "day" | "hour" | "week"; |
700 | } |
701 | | { |
702 | type: "date"; |
703 | operator: "calendar-month"; |
704 | value: number; |
705 | } |
706 | | { |
707 | type: "date"; |
708 | operator: |
709 | | "anniversary" |
710 | | "anniversary-month"; |
711 | } |
712 | | { |
713 | type: "existence"; |
714 | operator: "is-set"; |
715 | }; |
716 | }[]; |
717 | } |
718 | | { |
719 | subscription: "never_subscribed"; |
720 | filters: |
721 | | { |
722 | field: "bounce_date"; |
723 | filter: |
724 | | { |
725 | type: "date"; |
726 | operator: "after" | "before"; |
727 | date: string; |
728 | } |
729 | | { |
730 | type: "date"; |
731 | operator: "between-static"; |
732 | start: string; |
733 | end: string; |
734 | } |
735 | | { |
736 | type: "date"; |
737 | operator: |
738 | | "at-least" |
739 | | "in-the-last" |
740 | | "in-the-next"; |
741 | unit: "day" | "hour" | "week"; |
742 | quantity: number; |
743 | } |
744 | | { |
745 | type: "date"; |
746 | operator: |
747 | | "anniversary-last" |
748 | | "anniversary-next"; |
749 | unit: "day" | "hour" | "week"; |
750 | quantity: number; |
751 | } |
752 | | { |
753 | type: "date"; |
754 | operator: "between"; |
755 | start: number; |
756 | end: number; |
757 | unit: "day" | "hour" | "week"; |
758 | } |
759 | | { |
760 | type: "date"; |
761 | operator: "calendar-month"; |
762 | value: number; |
763 | } |
764 | | { |
765 | type: "date"; |
766 | operator: |
767 | | "anniversary" |
768 | | "anniversary-month"; |
769 | } |
770 | | { |
771 | type: "existence"; |
772 | operator: "is-set"; |
773 | }; |
774 | } |
775 | | { |
776 | field: "manual_suppression_date"; |
777 | filter: |
778 | | { |
779 | type: "date"; |
780 | operator: "after" | "before"; |
781 | date: string; |
782 | } |
783 | | { |
784 | type: "date"; |
785 | operator: "between-static"; |
786 | start: string; |
787 | end: string; |
788 | } |
789 | | { |
790 | type: "date"; |
791 | operator: |
792 | | "at-least" |
793 | | "in-the-last" |
794 | | "in-the-next"; |
795 | unit: "day" | "hour" | "week"; |
796 | quantity: number; |
797 | } |
798 | | { |
799 | type: "date"; |
800 | operator: |
801 | | "anniversary-last" |
802 | | "anniversary-next"; |
803 | unit: "day" | "hour" | "week"; |
804 | quantity: number; |
805 | } |
806 | | { |
807 | type: "date"; |
808 | operator: "between"; |
809 | start: number; |
810 | end: number; |
811 | unit: "day" | "hour" | "week"; |
812 | } |
813 | | { |
814 | type: "date"; |
815 | operator: "calendar-month"; |
816 | value: number; |
817 | } |
818 | | { |
819 | type: "date"; |
820 | operator: |
821 | | "anniversary" |
822 | | "anniversary-month"; |
823 | } |
824 | | { |
825 | type: "existence"; |
826 | operator: "is-set"; |
827 | }; |
828 | } |
829 | | { |
830 | field: "invalid_email_date"; |
831 | filter: |
832 | | { |
833 | type: "date"; |
834 | operator: "after" | "before"; |
835 | date: string; |
836 | } |
837 | | { |
838 | type: "date"; |
839 | operator: "between-static"; |
840 | start: string; |
841 | end: string; |
842 | } |
843 | | { |
844 | type: "date"; |
845 | operator: |
846 | | "at-least" |
847 | | "in-the-last" |
848 | | "in-the-next"; |
849 | unit: "day" | "hour" | "week"; |
850 | quantity: number; |
851 | } |
852 | | { |
853 | type: "date"; |
854 | operator: |
855 | | "anniversary-last" |
856 | | "anniversary-next"; |
857 | unit: "day" | "hour" | "week"; |
858 | quantity: number; |
859 | } |
860 | | { |
861 | type: "date"; |
862 | operator: "between"; |
863 | start: number; |
864 | end: number; |
865 | unit: "day" | "hour" | "week"; |
866 | } |
867 | | { |
868 | type: "date"; |
869 | operator: "calendar-month"; |
870 | value: number; |
871 | } |
872 | | { |
873 | type: "date"; |
874 | operator: |
875 | | "anniversary" |
876 | | "anniversary-month"; |
877 | } |
878 | | { |
879 | type: "existence"; |
880 | operator: "is-set"; |
881 | }; |
882 | }[]; |
883 | } |
884 | | { |
885 | subscription: "subscribed"; |
886 | filters: |
887 | | { |
888 | field: "bounce_date"; |
889 | filter: |
890 | | { |
891 | type: "date"; |
892 | operator: "after" | "before"; |
893 | date: string; |
894 | } |
895 | | { |
896 | type: "date"; |
897 | operator: "between-static"; |
898 | start: string; |
899 | end: string; |
900 | } |
901 | | { |
902 | type: "date"; |
903 | operator: |
904 | | "at-least" |
905 | | "in-the-last" |
906 | | "in-the-next"; |
907 | unit: "day" | "hour" | "week"; |
908 | quantity: number; |
909 | } |
910 | | { |
911 | type: "date"; |
912 | operator: |
913 | | "anniversary-last" |
914 | | "anniversary-next"; |
915 | unit: "day" | "hour" | "week"; |
916 | quantity: number; |
917 | } |
918 | | { |
919 | type: "date"; |
920 | operator: "between"; |
921 | start: number; |
922 | end: number; |
923 | unit: "day" | "hour" | "week"; |
924 | } |
925 | | { |
926 | type: "date"; |
927 | operator: "calendar-month"; |
928 | value: number; |
929 | } |
930 | | { |
931 | type: "date"; |
932 | operator: |
933 | | "anniversary" |
934 | | "anniversary-month"; |
935 | } |
936 | | { |
937 | type: "existence"; |
938 | operator: "is-set"; |
939 | }; |
940 | } |
941 | | { |
942 | field: "manual_suppression_date"; |
943 | filter: |
944 | | { |
945 | type: "date"; |
946 | operator: "after" | "before"; |
947 | date: string; |
948 | } |
949 | | { |
950 | type: "date"; |
951 | operator: "between-static"; |
952 | start: string; |
953 | end: string; |
954 | } |
955 | | { |
956 | type: "date"; |
957 | operator: |
958 | | "at-least" |
959 | | "in-the-last" |
960 | | "in-the-next"; |
961 | unit: "day" | "hour" | "week"; |
962 | quantity: number; |
963 | } |
964 | | { |
965 | type: "date"; |
966 | operator: |
967 | | "anniversary-last" |
968 | | "anniversary-next"; |
969 | unit: "day" | "hour" | "week"; |
970 | quantity: number; |
971 | } |
972 | | { |
973 | type: "date"; |
974 | operator: "between"; |
975 | start: number; |
976 | end: number; |
977 | unit: "day" | "hour" | "week"; |
978 | } |
979 | | { |
980 | type: "date"; |
981 | operator: "calendar-month"; |
982 | value: number; |
983 | } |
984 | | { |
985 | type: "date"; |
986 | operator: |
987 | | "anniversary" |
988 | | "anniversary-month"; |
989 | } |
990 | | { |
991 | type: "existence"; |
992 | operator: "is-set"; |
993 | }; |
994 | } |
995 | | { |
996 | field: "invalid_email_date"; |
997 | filter: |
998 | | { |
999 | type: "date"; |
1000 | operator: "after" | "before"; |
1001 | date: string; |
1002 | } |
1003 | | { |
1004 | type: "date"; |
1005 | operator: "between-static"; |
1006 | start: string; |
1007 | end: string; |
1008 | } |
1009 | | { |
1010 | type: "date"; |
1011 | operator: |
1012 | | "at-least" |
1013 | | "in-the-last" |
1014 | | "in-the-next"; |
1015 | unit: "day" | "hour" | "week"; |
1016 | quantity: number; |
1017 | } |
1018 | | { |
1019 | type: "date"; |
1020 | operator: |
1021 | | "anniversary-last" |
1022 | | "anniversary-next"; |
1023 | unit: "day" | "hour" | "week"; |
1024 | quantity: number; |
1025 | } |
1026 | | { |
1027 | type: "date"; |
1028 | operator: "between"; |
1029 | start: number; |
1030 | end: number; |
1031 | unit: "day" | "hour" | "week"; |
1032 | } |
1033 | | { |
1034 | type: "date"; |
1035 | operator: "calendar-month"; |
1036 | value: number; |
1037 | } |
1038 | | { |
1039 | type: "date"; |
1040 | operator: |
1041 | | "anniversary" |
1042 | | "anniversary-month"; |
1043 | } |
1044 | | { |
1045 | type: "existence"; |
1046 | operator: "is-set"; |
1047 | }; |
1048 | }[]; |
1049 | }; |
1050 | } |
1051 | | { |
1052 | channel: "sms"; |
1053 | can_receive_marketing: true; |
1054 | consent_status: { |
1055 | subscription: "subscribed"; |
1056 | filters?: |
1057 | | { |
1058 | field: "status_date"; |
1059 | filter: |
1060 | | { |
1061 | type: "date"; |
1062 | operator: "after" | "before"; |
1063 | date: string; |
1064 | } |
1065 | | { |
1066 | type: "date"; |
1067 | operator: "between-static"; |
1068 | start: string; |
1069 | end: string; |
1070 | } |
1071 | | { |
1072 | type: "date"; |
1073 | operator: |
1074 | | "at-least" |
1075 | | "in-the-last" |
1076 | | "in-the-next"; |
1077 | unit: "day" | "hour" | "week"; |
1078 | quantity: number; |
1079 | } |
1080 | | { |
1081 | type: "date"; |
1082 | operator: |
1083 | | "anniversary-last" |
1084 | | "anniversary-next"; |
1085 | unit: "day" | "hour" | "week"; |
1086 | quantity: number; |
1087 | } |
1088 | | { |
1089 | type: "date"; |
1090 | operator: "between"; |
1091 | start: number; |
1092 | end: number; |
1093 | unit: "day" | "hour" | "week"; |
1094 | } |
1095 | | { |
1096 | type: "date"; |
1097 | operator: "calendar-month"; |
1098 | value: number; |
1099 | } |
1100 | | { |
1101 | type: "date"; |
1102 | operator: |
1103 | | "anniversary" |
1104 | | "anniversary-month"; |
1105 | }; |
1106 | } |
1107 | | { |
1108 | field: "method"; |
1109 | method: "form"; |
1110 | filter?: { |
1111 | type: "string"; |
1112 | operator: "in"; |
1113 | value: string[]; |
1114 | }; |
1115 | } |
1116 | | { |
1117 | field: "method"; |
1118 | method: "manual_import"; |
1119 | filter?: { |
1120 | type: "string"; |
1121 | operator: "in"; |
1122 | value: string[]; |
1123 | }; |
1124 | } |
1125 | | { |
1126 | field: "method"; |
1127 | method: "manual_add"; |
1128 | filter?: { |
1129 | type: "string"; |
1130 | operator: "in"; |
1131 | value: string[]; |
1132 | }; |
1133 | } |
1134 | | { field: "method"; method: "checkout" } |
1135 | | { field: "method"; method: "inbound_message" } |
1136 | | { field: "method"; method: "preference_page" } |
1137 | | { field: "method"; method: "sftp" } |
1138 | | { |
1139 | field: "method"; |
1140 | method: "integration"; |
1141 | filter: { |
1142 | type: "string"; |
1143 | operator: "in"; |
1144 | value: "shopify"[]; |
1145 | }; |
1146 | }[]; |
1147 | }; |
1148 | } |
1149 | | { |
1150 | channel: "sms"; |
1151 | can_receive_marketing: false; |
1152 | consent_status: |
1153 | | { subscription: "any" } |
1154 | | { |
1155 | subscription: "unsubscribed"; |
1156 | filters?: |
1157 | | { |
1158 | field: "status_date"; |
1159 | filter: |
1160 | | { |
1161 | type: "date"; |
1162 | operator: "after" | "before"; |
1163 | date: string; |
1164 | } |
1165 | | { |
1166 | type: "date"; |
1167 | operator: "between-static"; |
1168 | start: string; |
1169 | end: string; |
1170 | } |
1171 | | { |
1172 | type: "date"; |
1173 | operator: |
1174 | | "at-least" |
1175 | | "in-the-last" |
1176 | | "in-the-next"; |
1177 | unit: "day" | "hour" | "week"; |
1178 | quantity: number; |
1179 | } |
1180 | | { |
1181 | type: "date"; |
1182 | operator: |
1183 | | "anniversary-last" |
1184 | | "anniversary-next"; |
1185 | unit: "day" | "hour" | "week"; |
1186 | quantity: number; |
1187 | } |
1188 | | { |
1189 | type: "date"; |
1190 | operator: "between"; |
1191 | start: number; |
1192 | end: number; |
1193 | unit: "day" | "hour" | "week"; |
1194 | } |
1195 | | { |
1196 | type: "date"; |
1197 | operator: "calendar-month"; |
1198 | value: number; |
1199 | } |
1200 | | { |
1201 | type: "date"; |
1202 | operator: |
1203 | | "anniversary" |
1204 | | "anniversary-month"; |
1205 | }; |
1206 | } |
1207 | | { |
1208 | field: "method"; |
1209 | method: "form"; |
1210 | filter?: { |
1211 | type: "string"; |
1212 | operator: "in"; |
1213 | value: string[]; |
1214 | }; |
1215 | } |
1216 | | { |
1217 | field: "method"; |
1218 | method: "manual_import"; |
1219 | filter?: { |
1220 | type: "string"; |
1221 | operator: "in"; |
1222 | value: string[]; |
1223 | }; |
1224 | } |
1225 | | { |
1226 | field: "method"; |
1227 | method: "manual_add"; |
1228 | filter?: { |
1229 | type: "string"; |
1230 | operator: "in"; |
1231 | value: string[]; |
1232 | }; |
1233 | } |
1234 | | { field: "method"; method: "manual_remove" } |
1235 | | { field: "method"; method: "bulk_remove" } |
1236 | | { field: "method"; method: "checkout" } |
1237 | | { field: "method"; method: "inbound_message" } |
1238 | | { field: "method"; method: "preference_page" } |
1239 | | { field: "method"; method: "sftp" } |
1240 | | { |
1241 | field: "method"; |
1242 | method: "carrier_deactivation"; |
1243 | } |
1244 | | { |
1245 | field: "method"; |
1246 | method: "provided_landline"; |
1247 | } |
1248 | | { field: "method"; method: "message_blocked" } |
1249 | | { field: "method"; method: "provided_no_age" } |
1250 | | { field: "method"; method: "failed_age_gate" } |
1251 | | { |
1252 | field: "method"; |
1253 | method: "integration"; |
1254 | filter: { |
1255 | type: "string"; |
1256 | operator: "in"; |
1257 | value: "shopify"[]; |
1258 | }; |
1259 | }[]; |
1260 | } |
1261 | | { subscription: "never_subscribed" }; |
1262 | } |
1263 | | { |
1264 | channel: "push"; |
1265 | can_receive_marketing: true; |
1266 | consent_status: { |
1267 | subscription: "any"; |
1268 | filters?: { |
1269 | field: "status_date"; |
1270 | filter: |
1271 | | { |
1272 | type: "date"; |
1273 | operator: "after" | "before"; |
1274 | date: string; |
1275 | } |
1276 | | { |
1277 | type: "date"; |
1278 | operator: "between-static"; |
1279 | start: string; |
1280 | end: string; |
1281 | } |
1282 | | { |
1283 | type: "date"; |
1284 | operator: |
1285 | | "at-least" |
1286 | | "in-the-last" |
1287 | | "in-the-next"; |
1288 | unit: "day" | "hour" | "week"; |
1289 | quantity: number; |
1290 | } |
1291 | | { |
1292 | type: "date"; |
1293 | operator: |
1294 | | "anniversary-last" |
1295 | | "anniversary-next"; |
1296 | unit: "day" | "hour" | "week"; |
1297 | quantity: number; |
1298 | } |
1299 | | { |
1300 | type: "date"; |
1301 | operator: "between"; |
1302 | start: number; |
1303 | end: number; |
1304 | unit: "day" | "hour" | "week"; |
1305 | } |
1306 | | { |
1307 | type: "date"; |
1308 | operator: "calendar-month"; |
1309 | value: number; |
1310 | } |
1311 | | { |
1312 | type: "date"; |
1313 | operator: "anniversary" | "anniversary-month"; |
1314 | }; |
1315 | }[]; |
1316 | }; |
1317 | } |
1318 | | { |
1319 | channel: "push"; |
1320 | can_receive_marketing: false; |
1321 | consent_status: { subscription: "any" }; |
1322 | }; |
1323 | } |
1324 | | { |
1325 | type: "profile-postal-code-distance"; |
1326 | country_code: string; |
1327 | postal_code: string; |
1328 | unit: "kilometers" | "miles"; |
1329 | filter: { |
1330 | type: "numeric"; |
1331 | operator: "greater-than" | "less-than"; |
1332 | value: number; |
1333 | }; |
1334 | } |
1335 | | { |
1336 | type: "profile-property"; |
1337 | property: string; |
1338 | filter: |
1339 | | { |
1340 | type: "string"; |
1341 | operator: |
1342 | | "equals" |
1343 | | "not-equals" |
1344 | | "contains" |
1345 | | "ends-with" |
1346 | | "not-contains" |
1347 | | "not-ends-with" |
1348 | | "not-starts-with" |
1349 | | "starts-with"; |
1350 | value: string; |
1351 | } |
1352 | | { |
1353 | type: "string"; |
1354 | operator: "in" | "not-in"; |
1355 | value: string[]; |
1356 | } |
1357 | | { |
1358 | type: "string"; |
1359 | operator: |
1360 | | "phone-country-code-in" |
1361 | | "phone-country-code-not-in"; |
1362 | value: string[]; |
1363 | } |
1364 | | { |
1365 | type: "numeric"; |
1366 | operator: |
1367 | | "equals" |
1368 | | "greater-than" |
1369 | | "greater-than-or-equal" |
1370 | | "less-than" |
1371 | | "less-than-or-equal" |
1372 | | "not-equals"; |
1373 | value: number; |
1374 | } |
1375 | | { |
1376 | type: "boolean"; |
1377 | operator: "equals"; |
1378 | value: false | true; |
1379 | } |
1380 | | { |
1381 | type: "date"; |
1382 | operator: "after" | "before"; |
1383 | date: string; |
1384 | } |
1385 | | { |
1386 | type: "date"; |
1387 | operator: "between-static"; |
1388 | start: string; |
1389 | end: string; |
1390 | } |
1391 | | { |
1392 | type: "date"; |
1393 | operator: "at-least" | "in-the-last" | "in-the-next"; |
1394 | unit: "day" | "hour" | "week"; |
1395 | quantity: number; |
1396 | } |
1397 | | { |
1398 | type: "date"; |
1399 | operator: "anniversary-last" | "anniversary-next"; |
1400 | unit: "day" | "hour" | "week"; |
1401 | quantity: number; |
1402 | } |
1403 | | { |
1404 | type: "date"; |
1405 | operator: "between"; |
1406 | start: number; |
1407 | end: number; |
1408 | unit: "day" | "hour" | "week"; |
1409 | } |
1410 | | { |
1411 | type: "date"; |
1412 | operator: "calendar-month"; |
1413 | value: number; |
1414 | } |
1415 | | { |
1416 | type: "date"; |
1417 | operator: "anniversary" | "anniversary-month"; |
1418 | } |
1419 | | { |
1420 | type: "list"; |
1421 | operator: "contains" | "not-contains"; |
1422 | value: string | number; |
1423 | } |
1424 | | { |
1425 | type: "list"; |
1426 | operator: |
1427 | | "length-equals" |
1428 | | "length-greater-than" |
1429 | | "length-greater-than-or-equal" |
1430 | | "length-less-than" |
1431 | | "length-less-than-or-equal"; |
1432 | value: number; |
1433 | } |
1434 | | { type: "existence"; operator: "is-set" | "not-set" }; |
1435 | } |
1436 | | { |
1437 | type: "profile-region"; |
1438 | in_region: false | true; |
1439 | region: "european_union" | "united_states"; |
1440 | } |
1441 | | { |
1442 | type: "profile-predictive-analytics"; |
1443 | dimension: |
1444 | | "average_days_between_orders" |
1445 | | "average_order_value" |
1446 | | "churn_probability" |
1447 | | "historic_clv" |
1448 | | "historic_number_of_orders" |
1449 | | "predicted_clv" |
1450 | | "predicted_number_of_orders" |
1451 | | "total_clv"; |
1452 | filter: { |
1453 | type: "numeric"; |
1454 | operator: |
1455 | | "equals" |
1456 | | "greater-than" |
1457 | | "greater-than-or-equal" |
1458 | | "less-than" |
1459 | | "less-than-or-equal" |
1460 | | "not-equals"; |
1461 | value: number; |
1462 | }; |
1463 | } |
1464 | | { |
1465 | type: "profile-predictive-analytics"; |
1466 | dimension: "predicted_gender"; |
1467 | filter: { |
1468 | type: "string"; |
1469 | operator: "equals" | "not-equals"; |
1470 | value: "likely_female" | "likely_male" | "uncertain"; |
1471 | }; |
1472 | }[]; |
1473 | }[]; |
1474 | }; |
1475 | is_starred?: false | true; |
1476 | }; |
1477 | }; |
1478 | }, |
1479 | ) { |
1480 | const url = new URL(`https://a.klaviyo.com/api/segments`); |
1481 |
|
1482 | const response = await fetch(url, { |
1483 | method: "POST", |
1484 | headers: { |
1485 | revision: revision, |
1486 | "Accept": "application/vnd.api+json", |
1487 | "Content-Type": "application/vnd.api+json", |
1488 | Authorization: "Klaviyo-API-Key " + auth.apiKey, |
1489 | }, |
1490 | body: JSON.stringify(body), |
1491 | }); |
1492 | if (!response.ok) { |
1493 | const text = await response.text(); |
1494 | throw new Error(`${response.status} ${text}`); |
1495 | } |
1496 | return await response.json(); |
1497 | } |
1498 |
|