//native
type Klaviyo = {
apiKey: string;
};
/**
* Update Segment
* Update a segment with the given segment ID.*Rate limits*:Burst: `1/s`Steady: `15/m`Daily: `100/d`
*/
export async function main(
auth: Klaviyo,
id: string,
revision: string,
body: {
data: {
type: "segment";
id: string;
attributes: {
definition?: {
condition_groups: {
conditions:
| {
type: "profile-group-membership";
is_member: true;
group_ids: string[];
timeframe_filter?:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator: "at-least" | "in-the-last" | "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
};
}
| {
type: "profile-group-membership";
is_member: false;
group_ids: string[];
}
| {
type: "profile-metric";
metric_id: string;
measurement: "count" | "sum";
measurement_filter: {
type: "numeric";
operator:
| "equals"
| "greater-than"
| "greater-than-or-equal"
| "less-than"
| "less-than-or-equal"
| "not-equals";
value: number;
};
timeframe_filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator: "at-least" | "in-the-last" | "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "anniversary-last" | "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| { type: "date"; operator: "alltime" };
metric_filters?: {
property: string;
filter?:
| {
type: "string";
operator:
| "equals"
| "not-equals"
| "contains"
| "ends-with"
| "not-contains"
| "not-ends-with"
| "not-starts-with"
| "starts-with";
value: string;
}
| {
type: "string";
operator: "in" | "not-in";
value: string[];
}
| { type: "existence"; operator: "is-set" | "not-set" }
| {
type: "list";
operator:
| "contains-all"
| "contains-any"
| "not-contains-all"
| "not-contains-any";
value: string[];
}
| {
type: "list";
operator:
| "length-equals"
| "length-greater-than"
| "length-greater-than-or-equal"
| "length-less-than"
| "length-less-than-or-equal";
value: number;
}
| {
type: "list";
operator:
| "contains-substring"
| "not-contains-substring";
value: string;
}
| {
type: "boolean";
operator: "equals";
value: false | true;
}
| {
type: "numeric";
operator:
| "equals"
| "greater-than"
| "greater-than-or-equal"
| "less-than"
| "less-than-or-equal"
| "not-equals";
value: number;
};
}[];
}
| {
type: "profile-marketing-consent";
consent:
| {
channel: "email";
can_receive_marketing: true;
consent_status:
| { subscription: "any" }
| {
subscription: "subscribed";
filters?:
| {
field: "is_double_opt_in";
filter: {
type: "boolean";
operator: "equals";
value: false | true;
};
}
| {
field: "status_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
};
}
| {
field: "custom_source";
filter: {
type: "string";
operator: "equals";
value: string;
};
}
| {
field: "method";
method: "form";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| {
field: "method";
method: "preference_page";
filter?: {
type: "string";
operator: "equals";
value: string;
};
}
| {
field: "method";
method: "api";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| { field: "method"; method: "inbound_message" }
| { field: "method"; method: "back_in_stock" }
| { field: "method"; method: "sftp" }
| {
field: "method";
method: "manual_import";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| {
field: "method";
method: "manual_add";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| {
field: "method";
method: "integration";
filter: {
type: "string";
operator: "in";
value: "shopify"[];
};
}[];
}
| { subscription: "never_subscribed" };
}
| {
channel: "email";
can_receive_marketing: false;
consent_status:
| {
subscription: "any";
filters?:
| {
field: "bounce_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "manual_suppression_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "invalid_email_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}[];
}
| {
subscription: "unsubscribed";
filters?:
| {
field: "status_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
};
}
| {
field: "method";
method: "api";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| { field: "method"; method: "inbound_message" }
| { field: "method"; method: "preference_page" }
| { field: "method"; method: "manual_remove" }
| { field: "method"; method: "spam_complaint" }
| {
field: "method";
method: "mailbox_provider";
}
| {
field: "method";
method: "integration";
filter: {
type: "string";
operator: "in";
value: "constant_contact"[];
};
}[]
| {
field: "bounce_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "manual_suppression_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "invalid_email_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}[];
}
| {
subscription: "never_subscribed";
filters:
| {
field: "bounce_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "manual_suppression_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "invalid_email_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}[];
}
| {
subscription: "subscribed";
filters:
| {
field: "bounce_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "manual_suppression_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}
| {
field: "invalid_email_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
}
| {
type: "existence";
operator: "is-set";
};
}[];
};
}
| {
channel: "sms";
can_receive_marketing: true;
consent_status: {
subscription: "subscribed";
filters?:
| {
field: "status_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
};
}
| {
field: "method";
method: "form";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| {
field: "method";
method: "manual_import";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| {
field: "method";
method: "manual_add";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| { field: "method"; method: "checkout" }
| { field: "method"; method: "inbound_message" }
| { field: "method"; method: "preference_page" }
| { field: "method"; method: "sftp" }
| {
field: "method";
method: "integration";
filter: {
type: "string";
operator: "in";
value: "shopify"[];
};
}[];
};
}
| {
channel: "sms";
can_receive_marketing: false;
consent_status:
| { subscription: "any" }
| {
subscription: "unsubscribed";
filters?:
| {
field: "status_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator:
| "anniversary"
| "anniversary-month";
};
}
| {
field: "method";
method: "form";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| {
field: "method";
method: "manual_import";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| {
field: "method";
method: "manual_add";
filter?: {
type: "string";
operator: "in";
value: string[];
};
}
| { field: "method"; method: "manual_remove" }
| { field: "method"; method: "bulk_remove" }
| { field: "method"; method: "checkout" }
| { field: "method"; method: "inbound_message" }
| { field: "method"; method: "preference_page" }
| { field: "method"; method: "sftp" }
| {
field: "method";
method: "carrier_deactivation";
}
| {
field: "method";
method: "provided_landline";
}
| { field: "method"; method: "message_blocked" }
| { field: "method"; method: "provided_no_age" }
| { field: "method"; method: "failed_age_gate" }
| {
field: "method";
method: "integration";
filter: {
type: "string";
operator: "in";
value: "shopify"[];
};
}[];
}
| { subscription: "never_subscribed" };
}
| {
channel: "push";
can_receive_marketing: true;
consent_status: {
subscription: "any";
filters?: {
field: "status_date";
filter:
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator:
| "at-least"
| "in-the-last"
| "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator:
| "anniversary-last"
| "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator: "anniversary" | "anniversary-month";
};
}[];
};
}
| {
channel: "push";
can_receive_marketing: false;
consent_status: { subscription: "any" };
};
}
| {
type: "profile-postal-code-distance";
country_code: string;
postal_code: string;
unit: "kilometers" | "miles";
filter: {
type: "numeric";
operator: "greater-than" | "less-than";
value: number;
};
}
| {
type: "profile-property";
property: string;
filter:
| {
type: "string";
operator:
| "equals"
| "not-equals"
| "contains"
| "ends-with"
| "not-contains"
| "not-ends-with"
| "not-starts-with"
| "starts-with";
value: string;
}
| {
type: "string";
operator: "in" | "not-in";
value: string[];
}
| {
type: "string";
operator:
| "phone-country-code-in"
| "phone-country-code-not-in";
value: string[];
}
| {
type: "numeric";
operator:
| "equals"
| "greater-than"
| "greater-than-or-equal"
| "less-than"
| "less-than-or-equal"
| "not-equals";
value: number;
}
| {
type: "boolean";
operator: "equals";
value: false | true;
}
| {
type: "date";
operator: "after" | "before";
date: string;
}
| {
type: "date";
operator: "between-static";
start: string;
end: string;
}
| {
type: "date";
operator: "at-least" | "in-the-last" | "in-the-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "anniversary-last" | "anniversary-next";
unit: "day" | "hour" | "week";
quantity: number;
}
| {
type: "date";
operator: "between";
start: number;
end: number;
unit: "day" | "hour" | "week";
}
| {
type: "date";
operator: "calendar-month";
value: number;
}
| {
type: "date";
operator: "anniversary" | "anniversary-month";
}
| {
type: "list";
operator: "contains" | "not-contains";
value: string | number;
}
| {
type: "list";
operator:
| "length-equals"
| "length-greater-than"
| "length-greater-than-or-equal"
| "length-less-than"
| "length-less-than-or-equal";
value: number;
}
| { type: "existence"; operator: "is-set" | "not-set" };
}
| {
type: "profile-region";
in_region: false | true;
region: "european_union" | "united_states";
}
| {
type: "profile-predictive-analytics";
dimension:
| "average_days_between_orders"
| "average_order_value"
| "churn_probability"
| "historic_clv"
| "historic_number_of_orders"
| "predicted_clv"
| "predicted_number_of_orders"
| "total_clv";
filter: {
type: "numeric";
operator:
| "equals"
| "greater-than"
| "greater-than-or-equal"
| "less-than"
| "less-than-or-equal"
| "not-equals";
value: number;
};
}
| {
type: "profile-predictive-analytics";
dimension: "predicted_gender";
filter: {
type: "string";
operator: "equals" | "not-equals";
value: "likely_female" | "likely_male" | "uncertain";
};
}[];
}[];
};
name?: string;
is_starred?: false | true;
};
};
},
) {
const url = new URL(`https://a.klaviyo.com/api/segments/${id}`);
const response = await fetch(url, {
method: "PATCH",
headers: {
revision: revision,
"Accept": "application/vnd.api+json",
"Content-Type": "application/vnd.api+json",
Authorization: "Klaviyo-API-Key " + auth.apiKey,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 428 days ago