klaviyo-api-fetch
Version:
A native fetch API using hey-api ts codegen
1,776 lines (1,628 loc) • 955 kB
text/typescript
// This file is auto-generated by @hey-api/openapi-ts
export type CouponEnum = 'coupon';
export type CouponResponseObjectResource = {
type: CouponEnum;
/**
* The internal id of a Coupon is equivalent to its external id stored within an integration.
*/
id: string;
attributes: {
/**
* This is the id that is stored in an integration such as Shopify or Magento.
*/
external_id: string;
/**
* A description of the coupon.
*/
description?: string | null;
};
links: ObjectLinks;
};
export type GetCouponResponseCollection = {
data: Array<CouponResponseObjectResource>;
links?: CollectionLinks;
};
export type GetCouponResponse = {
data: CouponResponseObjectResource;
};
export type CouponCodeEnum = 'coupon-code';
export type GetCouponCodeCouponRelationshipResponse = {
data: {
type: CouponEnum;
/**
* The internal id of a Coupon is equivalent to its external id stored within an integration.
*/
id: string;
};
};
export type CouponCodeResponseObjectResource = {
type: CouponCodeEnum;
/**
* The id of a coupon code is a combination of its unique code and the id of the coupon it is associated with.
*/
id: string;
attributes: {
/**
* This is a unique string that will be or is assigned to each customer/profile and is associated with a coupon.
*/
unique_code?: string | null;
/**
* The datetime when this coupon code will expire. If not specified or set to null, it will be automatically set to 1 year.
*/
expires_at?: string | null;
/**
* The current status of the coupon code.
*/
status?: 'ASSIGNED_TO_PROFILE' | 'DELETING' | 'PROCESSING' | 'UNASSIGNED' | 'USED' | 'VERSION_NOT_ACTIVE';
};
links: ObjectLinks;
};
export type GetCouponCodeResponseCollectionCompoundDocument = {
data: Array<CouponCodeResponseObjectResource & {
relationships?: {
coupon?: {
data?: {
type: CouponEnum;
id: string;
};
links?: RelationshipLinks;
};
profile?: {
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
included?: Array<CouponResponseObjectResource>;
};
export type GetCouponCodeResponseCompoundDocument = {
data: CouponCodeResponseObjectResource & {
relationships?: {
coupon?: {
data?: {
type: CouponEnum;
id: string;
};
links?: RelationshipLinks;
};
profile?: {
links?: RelationshipLinks;
};
};
};
included?: Array<CouponResponseObjectResource>;
};
export type GetCouponCodeResponseCollection = {
data: Array<CouponCodeResponseObjectResource & {
relationships?: {
coupon?: {
links?: RelationshipLinks;
};
profile?: {
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
};
export type GetCouponCodesRelationshipsResponseCollection = {
data: Array<{
type: CouponCodeEnum;
/**
* The id of a coupon code is a combination of its unique code and the id of the coupon it is associated with.
*/
id: string;
}>;
};
export type CatalogVariantEnum = 'catalog-variant';
export type CatalogItemEnum = 'catalog-item';
export type CatalogVariantResponseObjectResource = {
type: CatalogVariantEnum;
/**
* The catalog variant ID is a compound ID (string), with format: `{integration}:::{catalog}:::{external_id}`. Currently, the only supported integration type is `$custom`, and the only supported catalog is `$default`.
*/
id: string;
attributes: {
/**
* The ID of the catalog item variant in an external system.
*/
external_id?: string | null;
/**
* The title of the catalog item variant.
*/
title?: string | null;
/**
* A description of the catalog item variant.
*/
description?: string | null;
/**
* The SKU of the catalog item variant.
*/
sku?: string | null;
/**
* This field controls the visibility of this catalog item variant in product feeds/blocks. This field supports the following values:
* `1`: a product will not appear in dynamic product recommendation feeds and blocks if it is out of stock.
* `0` or `2`: a product can appear in dynamic product recommendation feeds and blocks regardless of inventory quantity.
*/
inventory_policy?: 0 | 1 | 2;
/**
* The quantity of the catalog item variant currently in stock.
*/
inventory_quantity?: number | null;
/**
* This field can be used to set the price on the catalog item variant, which is what gets displayed for the item variant when included in emails. For most price-update use cases, you will also want to update the `price` on any parent items using the [Update Catalog Item Endpoint](https://developers.klaviyo.com/en/reference/update_catalog_item).
*/
price?: number | null;
/**
* URL pointing to the location of the catalog item variant on your website.
*/
url?: string | null;
/**
* URL pointing to the location of a full image of the catalog item variant.
*/
image_full_url?: string | null;
/**
* URL pointing to the location of an image thumbnail of the catalog item variant.
*/
image_thumbnail_url?: string | null;
/**
* List of URLs pointing to the locations of images of the catalog item variant.
*/
images?: Array<string> | null;
/**
* Flat JSON blob to provide custom metadata about the catalog item variant. May not exceed 100kb.
*/
custom_metadata?: {
[key: string]: unknown;
} | null;
/**
* Boolean value indicating whether the catalog item variant is published.
*/
published?: boolean | null;
/**
* Date and time when the catalog item variant was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
created?: string | null;
/**
* Date and time when the catalog item variant was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
updated?: string | null;
};
links: ObjectLinks;
};
export type CatalogItemResponseObjectResource = {
type: CatalogItemEnum;
/**
* The catalog item ID is a compound ID (string), with format: `{integration}:::{catalog}:::{external_id}`. Currently, the only supported integration type is `$custom`, and the only supported catalog is `$default`.
*/
id: string;
attributes: {
/**
* The ID of the catalog item in an external system.
*/
external_id?: string | null;
/**
* The title of the catalog item.
*/
title?: string | null;
/**
* A description of the catalog item.
*/
description?: string | null;
/**
* This field can be used to set the price on the catalog item, which is what gets displayed for the item when included in emails. For most price-update use cases, you will also want to update the `price` on any child variants, using the [Update Catalog Variant Endpoint](https://developers.klaviyo.com/en/reference/update_catalog_variant).
*/
price?: number | null;
/**
* URL pointing to the location of the catalog item on your website.
*/
url?: string | null;
/**
* URL pointing to the location of a full image of the catalog item.
*/
image_full_url?: string | null;
/**
* URL pointing to the location of an image thumbnail of the catalog item
*/
image_thumbnail_url?: string | null;
/**
* List of URLs pointing to the locations of images of the catalog item.
*/
images?: Array<string> | null;
/**
* Flat JSON blob to provide custom metadata about the catalog item. May not exceed 100kb.
*/
custom_metadata?: {
[key: string]: unknown;
} | null;
/**
* Boolean value indicating whether the catalog item is published.
*/
published?: boolean | null;
/**
* Date and time when the catalog item was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
created?: string | null;
/**
* Date and time when the catalog item was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
updated?: string | null;
};
links: ObjectLinks;
};
export type GetCatalogItemResponseCollectionCompoundDocument = {
data: Array<CatalogItemResponseObjectResource & {
relationships?: {
variants?: {
data?: Array<{
type: CatalogVariantEnum;
id: string;
}>;
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
included?: Array<CatalogVariantResponseObjectResource>;
};
export type GetCatalogItemResponseCompoundDocument = {
data: CatalogItemResponseObjectResource & {
relationships?: {
variants?: {
data?: Array<{
type: CatalogVariantEnum;
id: string;
}>;
links?: RelationshipLinks;
};
};
};
included?: Array<CatalogVariantResponseObjectResource>;
};
export type GetCatalogCategoryItemsRelationshipsResponseCollection = {
data: Array<{
type: CatalogItemEnum;
/**
* The catalog item ID is a compound ID (string), with format: `{integration}:::{catalog}:::{external_id}`. Currently, the only supported integration type is `$custom`, and the only supported catalog is `$default`.
*/
id: string;
}>;
};
export type GetCatalogVariantResponseCollection = {
data: Array<CatalogVariantResponseObjectResource & {
relationships?: {
item?: {
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
};
export type GetCatalogVariantResponse = {
data: CatalogVariantResponseObjectResource & {
relationships?: {
item?: {
links?: RelationshipLinks;
};
};
};
};
export type GetCatalogItemVariantsRelationshipsResponseCollection = {
data: Array<{
type: CatalogVariantEnum;
/**
* The catalog variant ID is a compound ID (string), with format: `{integration}:::{catalog}:::{external_id}`. Currently, the only supported integration type is `$custom`, and the only supported catalog is `$default`.
*/
id: string;
}>;
};
export type CatalogCategoryEnum = 'catalog-category';
export type CatalogCategoryResponseObjectResource = {
type: CatalogCategoryEnum;
/**
* The catalog category ID is a compound ID (string), with format: `{integration}:::{catalog}:::{external_id}`. Currently, the only supported integration type is `$custom`, and the only supported catalog is `$default`.
*/
id: string;
attributes: {
/**
* The ID of the catalog category in an external system.
*/
external_id?: string | null;
/**
* The name of the catalog category.
*/
name?: string | null;
/**
* Date and time when the catalog category was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
updated?: string | null;
};
links: ObjectLinks;
};
export type GetCatalogCategoryResponseCollection = {
data: Array<CatalogCategoryResponseObjectResource & {
relationships?: {
items?: {
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
};
export type GetCatalogCategoryResponse = {
data: CatalogCategoryResponseObjectResource & {
relationships?: {
items?: {
links?: RelationshipLinks;
};
};
};
};
export type CouponCodeBulkCreateJobEnum = 'coupon-code-bulk-create-job';
export type ErrorSource = {
/**
* A pointer to the source of the error in the request payload.
*/
pointer?: string | null;
};
export type ApiJobErrorPayload = {
/**
* Unique identifier for the error.
*/
id: string;
/**
* A code for classifying the error type.
*/
code: string;
/**
* A high-level message about the error.
*/
title: string;
/**
* Specific details about the error.
*/
detail: string;
source: ErrorSource;
};
export type CouponCodeCreateJobResponseObjectResource = {
type: CouponCodeBulkCreateJobEnum;
/**
* Unique identifier for retrieving the job. Generated by Klaviyo.
*/
id: string;
attributes: {
/**
* Status of the asynchronous job.
*/
status: 'cancelled' | 'complete' | 'processing' | 'queued';
/**
* The date and time the job was created in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
created_at: string;
/**
* The total number of operations to be processed by the job. See `completed_count` for the job's current progress.
*/
total_count: number;
/**
* The total number of operations that have been completed by the job.
*/
completed_count?: number | null;
/**
* The total number of operations that have failed as part of the job.
*/
failed_count?: number | null;
/**
* Date and time the job was completed in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
completed_at?: string | null;
/**
* Array of errors encountered during the processing of the job.
*/
errors?: Array<ApiJobErrorPayload> | null;
/**
* Date and time the job expires in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
expires_at?: string | null;
};
links: ObjectLinks;
};
export type GetCouponCodeCreateJobResponseCollectionCompoundDocument = {
data: Array<CouponCodeCreateJobResponseObjectResource & {
relationships?: {
'coupon-codes'?: {
data?: Array<{
type: CouponCodeEnum;
/**
* IDs of the created coupon codes.
*/
id: string;
}>;
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
};
export type GetCouponCodeCreateJobResponseCompoundDocument = {
data: CouponCodeCreateJobResponseObjectResource & {
relationships?: {
'coupon-codes'?: {
data?: Array<{
type: CouponCodeEnum;
/**
* IDs of the created coupon codes.
*/
id: string;
}>;
links?: RelationshipLinks;
};
};
};
included?: Array<CouponCodeResponseObjectResource>;
};
export type GetCatalogItemCategoriesRelationshipsResponseCollection = {
data: Array<{
type: CatalogCategoryEnum;
/**
* The catalog category ID is a compound ID (string), with format: `{integration}:::{catalog}:::{external_id}`. Currently, the only supported integration type is `$custom`, and the only supported catalog is `$default`.
*/
id: string;
}>;
};
export type MetricEnum = 'metric';
export type FlowEnum = 'flow';
export type MetricResponseObjectResource = {
type: MetricEnum;
/**
* The Metric ID
*/
id: string;
attributes: {
/**
* The name of the metric
*/
name?: string | null;
/**
* Creation time in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
created?: string | null;
/**
* Last updated time in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
updated?: string | null;
/**
* The integration associated with the event
*/
integration?: {
[key: string]: unknown;
} | null;
};
links: ObjectLinks;
};
export type ProfileLocation = {
/**
* First line of street address
*/
address1?: string | null;
/**
* Second line of street address
*/
address2?: string | null;
/**
* City name
*/
city?: string | null;
/**
* Country name
*/
country?: string | null;
/**
* Latitude coordinate. We recommend providing a precision of four decimal places.
*/
latitude?: string | number | null;
/**
* Longitude coordinate. We recommend providing a precision of four decimal places.
*/
longitude?: string | number | null;
/**
* Region within a country, such as state or province
*/
region?: string | null;
/**
* Zip code
*/
zip?: string | null;
/**
* Time zone name. We recommend using time zones from the IANA Time Zone Database.
*/
timezone?: string | null;
/**
* IP Address
*/
ip?: string | null;
};
export type EmailMarketingSuppression = {
/**
* The reason the profile was suppressed.
*/
reason: 'HARD_BOUNCE' | 'INVALID_EMAIL' | 'SPAM_COMPLAINT' | 'UNSUBSCRIBE' | 'USER_SUPPRESSED';
/**
* The timestamp when the profile was suppressed, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
timestamp: string;
};
export type EmailMarketingListSuppression = {
/**
* The ID of list to which the suppression applies.
*/
list_id: string;
/**
* The reason the profile was suppressed from the list.
*/
reason: string;
/**
* The timestamp when the profile was suppressed from the list, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
timestamp: string;
};
export type EmailMarketing = {
/**
* Whether or not this profile has implicit consent to receive email marketing. True if it does profile does not have any global suppressions.
*/
can_receive_email_marketing: boolean;
/**
* The consent status for email marketing.
*/
consent: string;
/**
* The timestamp when consent was recorded or updated for email marketing, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
consent_timestamp?: string | null;
/**
* The timestamp when a field on the email marketing object was last modified.
*/
last_updated?: string | null;
/**
* The method by which the profile was subscribed to email marketing.
*/
method?: string | null;
/**
* Additional details about the method by which the profile was subscribed to email marketing. This may be empty if no details were provided.
*/
method_detail?: string | null;
/**
* Additional detail provided by the caller when the profile was subscribed. This may be empty if no details were provided.
*/
custom_method_detail?: string | null;
/**
* Whether the profile was subscribed to email marketing using a double opt-in.
*/
double_optin?: boolean | null;
/**
* The global email marketing suppression for this profile.
*/
suppression?: Array<EmailMarketingSuppression> | null;
/**
* The list suppressions for this profile.
*/
list_suppressions?: Array<EmailMarketingListSuppression> | null;
};
export type EmailChannel = {
marketing?: EmailMarketing;
};
export type SmsMarketing = {
/**
* Whether or not this profile is subscribed to receive SMS marketing.
*/
can_receive_sms_marketing: boolean;
/**
* The consent status for SMS marketing.
*/
consent: string;
/**
* The timestamp when consent was recorded or updated for SMS marketing, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
consent_timestamp?: string | null;
/**
* The method by which the profile was subscribed to SMS marketing.
*/
method?: string | null;
/**
* Additional details about the method which the profile was subscribed to SMS marketing. This may be empty if no details were provided.
*/
method_detail?: string | null;
/**
* The timestamp when the SMS consent record was last modified, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
last_updated?: string | null;
};
export type SmsTransactional = {
/**
* Whether or not this profile is subscribed to receive transactional SMS.
*/
can_receive_sms_transactional: boolean;
/**
* The consent status for SMS Transactional.
*/
consent: string;
/**
* The timestamp when consent was recorded or updated for Transactional SMS messaging , in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
consent_timestamp?: string | null;
/**
* The method by which the profile was subscribed to Transactional SMS messaging .
*/
method?: string | null;
/**
* Additional details about the method which the profile was subscribed to Transactional SMS messaging. This may be empty if no details were provided.
*/
method_detail?: string | null;
/**
* The timestamp when the SMS consent record was last modified, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
last_updated?: string | null;
};
export type SmsChannel = {
marketing?: SmsMarketing;
transactional?: SmsTransactional;
};
export type PushMarketing = {
/**
* Whether or not this profile is subscribed to receive mobile push.
*/
can_receive_push_marketing: boolean;
/**
* The consent status for mobile push marketing.
*/
consent: string;
/**
* The timestamp when the consent was last changed, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm).
*/
consent_timestamp?: string | null;
};
export type PushChannel = {
marketing?: PushMarketing;
};
export type Subscriptions = {
email?: EmailChannel;
sms?: SmsChannel;
mobile_push?: PushChannel;
};
export type PredictiveAnalytics = {
/**
* Total value of all historically placed orders
*/
historic_clv?: number | null;
/**
* Predicted value of all placed orders in the next 365 days
*/
predicted_clv?: number | null;
/**
* Sum of historic and predicted CLV
*/
total_clv?: number | null;
/**
* Number of already placed orders
*/
historic_number_of_orders?: number | null;
/**
* Predicted number of placed orders in the next 365 days
*/
predicted_number_of_orders?: number | null;
/**
* Average number of days between orders (None if only one order has been placed)
*/
average_days_between_orders?: number | null;
/**
* Average value of placed orders
*/
average_order_value?: number | null;
/**
* Probability the customer has churned
*/
churn_probability?: number | null;
/**
* Expected date of next order, as calculated at the time of their most recent order
*/
expected_date_of_next_order?: string | null;
};
export type ProfileEnum = 'profile';
export type ListEnum = 'list';
export type SegmentEnum = 'segment';
export type PushTokenEnum = 'push-token';
export type ProfileResponseObjectResource = {
type: ProfileEnum;
/**
* Primary key that uniquely identifies this profile. Generated by Klaviyo.
*/
id?: string | null;
attributes: {
/**
* Individual's email address
*/
email?: string | null;
/**
* Individual's phone number in E.164 format
*/
phone_number?: string | null;
/**
* A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
*/
external_id?: string | null;
/**
* Individual's first name
*/
first_name?: string | null;
/**
* Individual's last name
*/
last_name?: string | null;
/**
* Name of the company or organization within the company for whom the individual works
*/
organization?: string | null;
/**
* The locale of the profile, in the IETF BCP 47 language tag format like (ISO 639-1/2)-(ISO 3166 alpha-2)
*/
locale?: string | null;
/**
* Individual's job title
*/
title?: string | null;
/**
* URL pointing to the location of a profile image
*/
image?: string | null;
/**
* Date and time when the profile was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
created?: string | null;
/**
* Date and time when the profile was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
updated?: string | null;
/**
* Date and time of the most recent event the triggered an update to the profile, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
last_event_date?: string | null;
location?: ProfileLocation;
/**
* An object containing key/value pairs for any custom properties assigned to this profile
*/
properties?: {
[key: string]: unknown;
} | null;
};
links: ObjectLinks;
};
export type AttributionEnum = 'attribution';
export type EventEnum = 'event';
export type CampaignEnum = 'campaign';
export type CampaignMessageEnum = 'campaign-message';
export type FlowMessageEnum = 'flow-message';
export type AttributionResponseObjectResource = {
type: AttributionEnum;
/**
* The ID of the attribution
*/
id: string;
relationships?: {
event?: {
data?: {
type: EventEnum;
/**
* Event
*/
id: string;
};
};
'attributed-event'?: {
data?: {
type: EventEnum;
/**
* Attributed Event
*/
id: string;
};
};
campaign?: {
data?: {
type: CampaignEnum;
/**
* Attributed Campaign
*/
id: string;
};
};
'campaign-message'?: {
data?: {
type: CampaignMessageEnum;
/**
* Attributed Campaign Message
*/
id: string;
};
};
flow?: {
data?: {
type: FlowEnum;
/**
* Attributed Flow
*/
id: string;
};
};
'flow-message'?: {
data?: {
type: FlowMessageEnum;
/**
* Attributed Flow Message
*/
id: string;
};
};
'flow-message-variation'?: {
data?: {
type: FlowMessageEnum;
/**
* Attributed Flow Message Variation
*/
id: string;
};
};
};
links: ObjectLinks;
};
export type EventResponseObjectResource = {
type: EventEnum;
/**
* The Event ID
*/
id: string;
attributes: {
/**
* Event timestamp in seconds
*/
timestamp?: number | null;
/**
* Event properties, can include identifiers and extra properties
*/
event_properties?: {
[key: string]: unknown;
} | null;
/**
* Event timestamp in ISO8601 format (YYYY-MM-DDTHH:MM:SS+hh:mm)
*/
datetime?: string | null;
/**
* A unique identifier for the event, this can be used as a cursor in pagination
*/
uuid?: string | null;
};
links: ObjectLinks;
};
export type GetEventResponseCollectionCompoundDocument = {
data: Array<EventResponseObjectResource & {
relationships?: {
profile?: {
data?: {
type: ProfileEnum;
/**
* Profile ID of the associated profile, if available
*/
id: string;
};
links?: RelationshipLinks;
};
metric?: {
data?: {
type: MetricEnum;
/**
* The Metric ID
*/
id: string;
};
links?: RelationshipLinks;
};
attributions?: {
data?: Array<{
type: AttributionEnum;
/**
* Attributions for this event
*/
id: string;
}>;
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
included?: Array<AttributionResponseObjectResource | MetricResponseObjectResource | ProfileResponseObjectResource>;
};
export type GetEventResponseCompoundDocument = {
data: EventResponseObjectResource & {
relationships?: {
profile?: {
data?: {
type: ProfileEnum;
/**
* Profile ID of the associated profile, if available
*/
id: string;
};
links?: RelationshipLinks;
};
metric?: {
data?: {
type: MetricEnum;
/**
* The Metric ID
*/
id: string;
};
links?: RelationshipLinks;
};
attributions?: {
data?: Array<{
type: AttributionEnum;
/**
* Attributions for this event
*/
id: string;
}>;
links?: RelationshipLinks;
};
};
};
included?: Array<AttributionResponseObjectResource | MetricResponseObjectResource | ProfileResponseObjectResource>;
};
export type GetMetricResponse = {
data: MetricResponseObjectResource & {
relationships?: {
'flow-triggers'?: {
links?: RelationshipLinks;
};
};
};
};
export type GetEventMetricRelationshipResponse = {
data: {
type: MetricEnum;
/**
* The Metric ID
*/
id: string;
};
};
export type GetProfileResponse = {
data: ProfileResponseObjectResource & {
relationships?: {
lists?: {
links?: RelationshipLinks;
};
segments?: {
links?: RelationshipLinks;
};
'push-tokens'?: {
links?: RelationshipLinks;
};
};
} & {
type?: ProfileEnum;
attributes?: {
subscriptions?: Subscriptions;
predictive_analytics?: PredictiveAnalytics;
};
};
};
export type GetEventProfileRelationshipResponse = {
data: {
type: ProfileEnum;
/**
* Primary key that uniquely identifies this profile. Generated by Klaviyo.
*/
id: string;
};
};
export type FlowActionEnum = 'flow-action';
export type TagEnum = 'tag';
export type FlowResponseObjectResource = {
type: FlowEnum;
id: string;
attributes: {
name?: string | null;
status?: string | null;
archived?: boolean | null;
created?: string | null;
updated?: string | null;
/**
* Corresponds to the object which triggered the flow.
*/
trigger_type?: 'Added to List' | 'Date Based' | 'Low Inventory' | 'Metric' | 'Price Drop' | 'Unconfigured';
};
links: ObjectLinks;
};
export type GetMetricResponseCollectionCompoundDocument = {
data: Array<MetricResponseObjectResource & {
relationships?: {
'flow-triggers'?: {
data?: Array<{
type: FlowEnum;
id: string;
}>;
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
included?: Array<FlowResponseObjectResource>;
};
export type GetMetricResponseCompoundDocument = {
data: MetricResponseObjectResource & {
relationships?: {
'flow-triggers'?: {
data?: Array<{
type: FlowEnum;
id: string;
}>;
links?: RelationshipLinks;
};
};
};
included?: Array<FlowResponseObjectResource>;
};
export type GetFlowResponseCollection = {
data: Array<FlowResponseObjectResource & {
relationships?: {
'flow-actions'?: {
links?: RelationshipLinks;
};
tags?: {
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
};
export type GetMetricFlowTriggersRelationshipsResponseCollection = {
data: Array<{
type: FlowEnum;
id: string;
}>;
};
export type TagGroupEnum = 'tag-group';
export type TagResponseObjectResource = {
type: TagEnum;
/**
* The Tag ID
*/
id: string;
attributes: {
/**
* The Tag name
*/
name: string;
};
links: ObjectLinks;
};
export type ListListResponseObjectResource = {
type: ListEnum;
/**
* Primary key that uniquely identifies this list. Generated by Klaviyo.
*/
id: string;
attributes: {
/**
* A helpful name to label the list
*/
name?: string | null;
/**
* Date and time when the list was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
created?: string | null;
/**
* Date and time when the list was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
updated?: string | null;
/**
* The opt-in process for this list. Could be either 'single_opt_in' or 'double_opt_in'.
*/
opt_in_process?: 'double_opt_in' | 'single_opt_in';
};
links: ObjectLinks;
};
export type GetListListResponseCollectionCompoundDocument = {
data: Array<ListListResponseObjectResource & {
relationships?: {
profiles?: {
links?: RelationshipLinks;
};
tags?: {
data?: Array<{
type: TagEnum;
id: string;
}>;
links?: RelationshipLinks;
};
'flow-triggers'?: {
data?: Array<{
type: FlowEnum;
id: string;
}>;
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
included?: Array<FlowResponseObjectResource | TagResponseObjectResource>;
};
export type ListRetrieveResponseObjectResource = {
type: ListEnum;
/**
* Primary key that uniquely identifies this list. Generated by Klaviyo.
*/
id: string;
attributes: {
/**
* A helpful name to label the list
*/
name?: string | null;
/**
* Date and time when the list was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
created?: string | null;
/**
* Date and time when the list was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
updated?: string | null;
/**
* The opt-in process for this list. Could be either 'single_opt_in' or 'double_opt_in'.
*/
opt_in_process?: 'double_opt_in' | 'single_opt_in';
};
links: ObjectLinks;
};
export type GetListRetrieveResponseCompoundDocument = {
data: ListRetrieveResponseObjectResource & {
relationships?: {
profiles?: {
links?: RelationshipLinks;
};
tags?: {
data?: Array<{
type: TagEnum;
id: string;
}>;
links?: RelationshipLinks;
};
'flow-triggers'?: {
data?: Array<{
type: FlowEnum;
id: string;
}>;
links?: RelationshipLinks;
};
};
} & {
type?: ListEnum;
attributes?: {
profile_count?: number | null;
};
};
included?: Array<FlowResponseObjectResource | TagResponseObjectResource>;
};
export type GetTagResponseCollection = {
data: Array<TagResponseObjectResource & {
relationships?: {
'tag-group'?: {
links?: RelationshipLinks;
};
lists?: {
links?: RelationshipLinks;
};
segments?: {
links?: RelationshipLinks;
};
campaigns?: {
links?: RelationshipLinks;
};
flows?: {
links?: RelationshipLinks;
};
};
}>;
links?: CollectionLinks;
};
export type GetListTagsRelationshipsResponseCollection = {
data: Array<{
type: TagEnum;
/**
* The Tag ID
*/
id: string;
}>;
};
export type ListMemberResponseObjectResource = {
type: ProfileEnum;
/**
* Primary key that uniquely identifies this profile. Generated by Klaviyo.
*/
id?: string | null;
attributes: {
/**
* Individual's email address
*/
email?: string | null;
/**
* Individual's phone number in E.164 format
*/
phone_number?: string | null;
/**
* A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system, such as a point-of-sale system. Format varies based on the external system.
*/
external_id?: string | null;
/**
* Individual's first name
*/
first_name?: string | null;
/**
* Individual's last name
*/
last_name?: string | null;
/**
* Name of the company or organization within the company for whom the individual works
*/
organization?: string | null;
/**
* The locale of the profile, in the IETF BCP 47 language tag format like (ISO 639-1/2)-(ISO 3166 alpha-2)
*/
locale?: string | null;
/**
* Individual's job title
*/
title?: string | null;
/**
* URL pointing to the location of a profile image
*/
image?: string | null;
/**
* Date and time when the profile was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
created?: string | null;
/**
* Date and time when the profile was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
updated?: string | null;
/**
* Date and time of the most recent event the triggered an update to the profile, in ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm)
*/
last_event_date?: string | null;
location?: ProfileLocation;
/**
* An object containing key/value pairs for any custom properties assigned to this profile
*/
properties?: {
[key: string]: unknown;
} | null;
/**
* The datetime when this profile most recently joined the list.
*/
joined_group_at: string;
};
links: ObjectLinks;
};
export type GetListMemberResponseCollection = {
data: Array<ListMemberResponseObjectResource & {
relationships?: {
lists?: {
links?: RelationshipLinks;
};
segments?: {
links?: RelationshipLinks;
};
'push-tokens'?: {
links?: RelationshipLinks;
};
};
} & {
type?: ProfileEnum;
attributes?: {
subscriptions?: Subscriptions;
predictive_analytics?: PredictiveAnalytics;
};
}>;
links?: CollectionLinks;
};
export type GetListProfilesRelationshipsResponseCollection = {
data: Array<{
type: ProfileEnum;
/**
* Primary key that uniquely identifies this profile. Generated by Klaviyo.
*/
id: string;
}>;
};
export type GetListFlowTriggersRelationshipsResponseCollection = {
data: Array<{
type: FlowEnum;
id: string;
}>;
};
export type ProfileGroupMembershipEnum = 'profile-group-membership';
export type DateEnum = 'date';
export type StaticDateFilter = {
type: DateEnum;
/**
* Operators for static date filters.
*
* E.g. "before 2023-01-01"
*/
operator: 'after' | 'before';
date: string;
};
export type StaticDateRangeFilter = {
type: DateEnum;
/**
* Operators for static date range filters.
*
* E.g. "between 2023-01-01 and 2023-02-01"
*/
operator: 'between-static';
start: string;
end: string;
};
export type RelativeDateOperatorBaseFilter = {
type: DateEnum;
/**
* Operators for relative date filters.
*
* e.g. "in the last 10 days"
*/
operator: 'at-least' | 'in-the-last' | 'in-the-next';
/**
* Units for relative date filters.
*/
unit: 'day' | 'hour' | 'week';
quantity: number;
};
export type RelativeDateRangeFilter = {
type: DateEnum;
/**
* Operators for relative date range filters.
*
* e.g. "between 10 and 20 days ago"
*/
operator: 'between';
start: number;
end: number;
/**
* Units for relative date filters.
*/
unit: 'day' | 'hour' | 'week';
};
export type ProfileHasGroupMembershipCondition = {
type: ProfileGroupMembershipEnum;
is_member: true;
group_ids: Array<string>;
timeframe_filter?: StaticDateFilter | StaticDateRangeFilter | RelativeDateOperatorBaseFilter | RelativeDateRangeFilter | null;
};
export type ProfileNoGroupMembershipCondition = {
type: ProfileGroupMembershipEnum;
is_member: false;
group_ids: Array<string>;
};
export type ProfileMetricEnum = 'profile-metric';
export type NumericEnum = 'numeric';
export type NumericOperatorFilter = {
type: NumericEnum;
/**
* Operators for numeric filters.
*/
operator: 'equals' | 'greater-than' | 'greater-than-or-equal' | 'less-than' | 'less-than-or-equal' | 'not-equals';
value: number | number;
};
export type RelativeAnniversaryDateFilter = {
type: DateEnum;
/**
* Operators for relative date filters.
*
* e.g. "anniversary in the last 10 days"
*/
operator: 'anniversary-last' | 'anniversary-next';
/**
* Units for relative date filters.
*/
unit: 'day' | 'hour' | 'week';
quantity: number;
};
export type AlltimeDateFilter = {
type: DateEnum;
/**
* Operators for alltime date filters.
*/
operator: 'alltime';
};
export type StringEnum = 'string';
export type StringOperatorFilter = {
type: StringEnum;
/**
* Operators for string filters.
*/
operator: 'contains' | 'ends-with' | 'equals' | 'not-contains' | 'not-ends-with' | 'not-equals' | 'not-starts-with' | 'starts-with';
value: string | null;
};
export type StringArrayOperatorFilter = {
type: StringEnum;
/**
* Operators for string-in-array filters.
*/
operator: 'in' | 'not-in';
value: Array<string>;
};
export type ExistenceEnum = 'existence';
export type ExistenceOperatorFilter = {
type: ExistenceEnum;
/**
* Operators for existence filters.
*/
operator: 'is-set' | 'not-set';
};
export type ListSetFilter = {
type: ListEnum;
/**
* Operators for list contains set filters.
*/
operator: 'contains-all' | 'contains-any' | 'not-contains-all' | 'not-contains-any';
value: Array<string>;
};
export type ListLengthFilter = {
type: ListEnum;
/**
* Operators for list length filters.
*/
operator: 'length-equals' | 'length-greater-than' | 'length-greater-than-or-equal' | 'length-less-than' | 'length-less-than-or-equal';
value: number;
};
export type ListSubstringFilter = {
type: ListEnum;
/**
* Operators for list substring filters.
*/
operator: 'contains-substring' | 'not-contains-substring';
value: string | null;
};
export type BooleanEnum = 'boolean';
export type BooleanFilter = {
type: BooleanEnum;
/**
* Operators for boolean filters.
*/
operator: 'equals';
value: boolean;
};
export type ProfileMetricPropertyFilter = {
property: string;
filter?: StringOperatorFilter | StringArrayOperatorFilter | ExistenceOperatorFilter | ListSetFilter | ListLengthFilter | ListSubstringFilter | BooleanFilter | NumericOperatorFilter | null;
};
export type SegmentsProfileMetricCondition = {
type: ProfileMetricEnum;
metric_id: string;
/**
* Measurements for profile metrics.
*/
measurement: 'count' | 'sum';
measurement_filter: NumericOperatorFilter;
timeframe_filter: StaticDateFilter | StaticDateRangeFilter | RelativeDateOperatorBaseFilter | RelativeAnniversaryDateFilter | RelativeDateRangeFilter | AlltimeDateFilter;
metric_filters?: Array<ProfileMetricPropertyFilter> | null;
};
export type ProfileMarketingConsentEnum = 'profile-marketing-consent';
export type EmailEnum = 'email';
export type AnyEnum = 'any';
export type HasEmailMarketing = {
subscription: AnyEnum;
filters?: unknown;
};
export type SubscribedEnum = 'subscribed';
export type IsDoubleOptInEnum = 'is_double_opt_in';
export type DoubleOptinFilter = {
field: IsDoubleOptInEnum;
filter: BooleanFilter;
};
export type StatusDateEnum = 'status_date';
export type CalendarDateFilter = {
type: DateEnum;
/**
* Operators for calendar date filters.
*/
operator: 'calendar-month';
value: number;
};
export type AnniversaryDateFilter = {
type: DateEnum;
/**
* Operators for anniversary date filters.
*/
operator: 'anniversary' | 'anniversary-month';
};
export type StatusDateFilter = {
field: StatusDateEnum;
filter: StaticDateFilter | StaticDateRangeFilter | RelativeDateOperatorBaseFilter | RelativeAnniversaryDateFilter | RelativeDateRangeFilter | CalendarDateFilter | AnniversaryDateFilter;
};
export type CustomSourceEnum = 'custom_source';
export type EqualsEnum = 'equals';
export type EqualsStringFilter = {
type: StringEnum;
operator: EqualsEnum;
value: string | null;
};
export type CustomSourceFilter = {
field: CustomSourceEnum;
filter: EqualsStringFilter;
};
export type MethodEnum = 'method';
export type FormEnum = 'form';
export type InEnum = 'in';
export type InStringArrayFilter = {
type: StringEnum;
operator: InEnum;
value: Array<string>;
};
export type FormMethodFilter = {
field: MethodEnum;
method: FormEnum;
filter?: InStringArrayFilter;
};
export type PreferencePageEnum = 'preference_page';
export type PreferencePageFilter = {
field: MethodEnum;
method: PreferencePageEnum;
filter?: EqualsStringFilter;
};
export type ApiEnum = 'api';
export type ApiMethodFilter = {
field: MethodEnum;
method: ApiEnum;
filter?: InStringArrayFilter;
};
export type InboundMessageEnum = 'inbound_message';
export type InboundMessageMethodFilter = {
field: MethodEnum;
method: InboundMessageEnum;
};
export type BackInStockEnum = 'back_in_stock';
export type BackInStockMethodFilter = {
field: MethodEnum;
method: BackInStockEnum;
};
export type SftpEnum = 'sftp';
export type SftpMethodFilter = {
field: MethodEnum;
method: SftpEnum;
};
export type ManualImportEnum = 'manual_import';
export type ManualImportMethodFilter = {
field: MethodEnum;
method: ManualImportEnum;
filter?: InStringArrayFilter;
};
export type ManualAddEnum = 'manual_add';
export type ManualAddMethodFilter = {
field: MethodEnum;
method: ManualAddEnum;
filter?: InStringArrayFilter;
};
export type IntegrationEnum = 'integration';
export type ShopifyEnum = 'shopify';
export type ShopifyIntegrationFilter = {
type: StringEnum;
operator: InEnum;
value: Array<ShopifyEnum>;
};
export type ShopifyIntegrationMethodFilter = {
field: MethodEnum;
method: IntegrationEnum;
filter: ShopifyIntegrationFilter;
};
export type HasEmailMarketingSubscribed = {
subscription: SubscribedEnum;
filters?: Array<Do