Add better segmenting
This commit is contained in:
+33
-14
@@ -1,33 +1,52 @@
|
||||
// Segment filter types
|
||||
export type SegmentFilterOperator =
|
||||
// Standard operators (for contact fields)
|
||||
| 'equals'
|
||||
| 'notEquals'
|
||||
| 'contains'
|
||||
| 'notContains'
|
||||
| 'greaterThan'
|
||||
| 'lessThan'
|
||||
| 'greaterThanOrEqual'
|
||||
| 'lessThanOrEqual'
|
||||
| 'exists'
|
||||
| 'notExists'
|
||||
| 'within'
|
||||
// Event-based operators
|
||||
| 'triggered' // Event/email activity occurred (any time)
|
||||
| 'triggeredWithin' // Event/email activity occurred within timeframe
|
||||
| 'notTriggered'; // Event/email activity never occurred
|
||||
|
||||
export type SegmentFilterLogic = 'AND' | 'OR';
|
||||
|
||||
export interface SegmentFilter {
|
||||
field: string;
|
||||
operator:
|
||||
| 'equals'
|
||||
| 'notEquals'
|
||||
| 'contains'
|
||||
| 'notContains'
|
||||
| 'greaterThan'
|
||||
| 'lessThan'
|
||||
| 'greaterThanOrEqual'
|
||||
| 'lessThanOrEqual'
|
||||
| 'exists'
|
||||
| 'notExists'
|
||||
| 'within';
|
||||
operator: SegmentFilterOperator;
|
||||
value?: any;
|
||||
unit?: 'days' | 'hours' | 'minutes';
|
||||
}
|
||||
|
||||
export interface FilterGroup {
|
||||
filters: SegmentFilter[];
|
||||
conditions?: FilterCondition;
|
||||
}
|
||||
|
||||
export interface FilterCondition {
|
||||
logic: SegmentFilterLogic;
|
||||
groups: FilterGroup[];
|
||||
}
|
||||
|
||||
export interface CreateSegmentData {
|
||||
name: string;
|
||||
description?: string;
|
||||
filters: SegmentFilter[];
|
||||
condition: FilterCondition;
|
||||
trackMembership?: boolean;
|
||||
}
|
||||
|
||||
export interface UpdateSegmentData {
|
||||
name?: string;
|
||||
description?: string;
|
||||
filters?: SegmentFilter[];
|
||||
condition?: FilterCondition;
|
||||
trackMembership?: boolean;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user