1. 标签/用户群规则描述

规则描述部分是可嵌套的结构,较为复杂,此处单独进行描述。
在 “添加” 标签/用户群时,会用到规则描述。

rules\_relation\_node: 规则之间的逻辑关系

// 规则间逻辑关系
{
  "type": "rules_relation"
  "relation": string; // and/or
  "rules":[] // 只允许 type 为 "rules_relation" 和三种规则节点,不允许为空
}

rule\_node: 规则节点,分三种

// 属性规则
{
  "type": "profile_rule",
  "field": string, // 属性、标签/用户群或属性和标签/用户群的组合
  "function": string, // 规则函数(指标约束) 
  "params": [] // 规则条件值。List<Object>
}
// 事件规则
{
  "type": "event_rule",
  "measure": {
    "type": "event_measure",
    "event_name": string, // 事件名
    "aggregator": string, // 指标统计方式,如count, sum之类
    "field": string // optional. 某些指标统计方式对应的 field 可以为空
  },
  "time_function": string, // 时间区间函数
  "time_params": [], // 时间区间参数
  "function": string, // 规则函数 (指标约束)
  "params": [], // 规则条件。不出现指标
  "filters": [] // 筛选条件。可以为空列表,不为空时只有一个元素,filter_relation_node或filter_node
}
// 行为序列规则
{
  "type": "event_sequence_rule",
  "time_function": string, // 行为序列的时间函数
  "time_params": [], // 行为序列的时间区间参数
  "steps":
  [
    {
      "event": string, // 事件名1/虚拟事件1
      "filters": [] // 筛选条件,同上
    },
    {
      "event": string, // 事件名2/虚拟事件2
      "filters": [] // 筛选条件,同上
    }
  ]
}

filter\_realtion\_node: 同一事件的筛选条件的逻辑关系

{
  "type": "filters_relation",
  "relation": string; // and/or
  "subfilters":[] // 只允许type为filters_relation或filter
}

filter\_node: 事件或事件型指标的数据约束

{
  "type": "filter"
  "field": string, // 事件属性
  "function": string, // 筛选条件函数
  "params": [] // 筛选条件的值
}

2. 分群 API 全部下线,1.14 分群升级为用户群

以下接口的 request 和 response 都是 application/json 格式

公共字段 字段名、字段含义、字段类型及可选值:

字段名字段含义字段类型是否必填可选值其他说明
name标签/用户群英文名string
创建时不填写则不校验(默认给个不冲突的 name),如果填写了则会进行重名校验
cname标签/用户群中文名string

comment标签/用户群备注string

cron调度周期string
cron 表达式 如:0 0 0 ? * 表示每天 0 点计算,如果是单次标签/用户群则可缺省
is_routine是否是例行标签/用户群boolean
如果是例行标签/用户群,则上面的 cron 必填
app_push_listapp push 配置列表list

base_time标签/用户群计算的基准时间string
创建时不需填写(填写也无效)格式如:"2019-03-05 00:00:00"
unit标签/用户群更新周期stringDAY目前只支持 DAY
data_type标签/用户群数据类型stringBOOL, NUMBER, STRING, DATETIME参考 数据格式
source_type标签/用户群类型string1规则创建的标签/用户群

2.1. 创建一个用户群

[POST /segmenter/rule 创建分群] 替换为 [PUT /v2/user_groups 创建一个用户群]

  • Request
{
  "cname": "string",
  "data_type": "BOOL",
  "unit": "DAY",
  "source_type": 0,
  "is_routine": true,
  "comment": "string",
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [ // 规则创建的计算规则,list size = 1
    {
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ]
}
  • Response 200
{
  "id": 0,
  "name": "string",
  "cname": "string",
  "user_name": "string",
  "create_time": "string", // 创建时间
  "data_type": "BOOL",
  "unit": "DAY",
  "source_type": 0,
  "is_routine": true,
  "status": "PENDING",
  "comment": "string",
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [ // 规则创建的用户群信息, list size 为 1
    {
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ],
  "failed_partition_count": 0, // 失败的 partition 数, Type:int
  "last_succeed_partition": { // 最后一次计算成功的 partition 信息,如果没有则不传
    "base_time": "string",
    "start_time": "string", // 计算的开始时间
    "finished_time": "string", // 计算的结束时间
    "user_count": 0, // 计算的用户数
    "status": "SUCCEED", // partition 的状态
    "rule_content_list": [
      {
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
  },
  "last_partition_info": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "next_partition_base_time": "string" // 下次计算的 base_time,单次用户群不返回
  }
}

2.2. 获取用户群列表

[GET/segmenter/rule/all 获取分群列表] 替换为 [GET /v2/user_groups 获取用户群列表]

  • Responses 200
[
  {
    "id": 0,
    "name": "string",
    "cname": "string",
    "user_name": "string",
    "create_time": "string", // 创建时间
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true,
    "status": "PENDING",
    "comment": "string",
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [ // 规则创建的用户群信息, list size 为 1
      {
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "failed_partition_count": 0, // 失败的 partition 数, Type:int
    "last_succeed_partition": { // 最后一次计算成功的 partition 信息,如果没有则不传
      "base_time": "string",
      "start_time": "string", // 计算的开始时间
      "finished_time": "string", // 计算的结束时间
      "user_count": 0, // 计算的用户数
      "status": "SUCCEED", // partition 的状态
      "rule_content_list": [
        {
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string" // 下次计算的 base_time,单次用户群不返回
    }
  }
] 

2.3. 执行用户群

[POST /segmenter/execute 执行分群] 替换为 [POST /v2/user_tags/{id}/execute 执行标签]

  • Request(In Path):
    • base_time_list:Partition 的 base_time。 Type :List<String>,可缺省。缺省计算最近一次 Partition
  • Response 200
{}

2.4. 获取用户群信息

[GET /segmenter/rule/{id} 获取分群详情] 替换为 [GET /v2/user_groups/{id} 获取用户群信息]

  • Response 200
{
  "id": 0,
  "name": "string",
  "cname": "string",
  "user_name": "string",
  "create_time": "string", // 创建时间
  "data_type": "BOOL",
  "unit": "HOUR",
  "source_type": 0,
  "is_routine": true,
  "status": "PENDING",
  "comment": "string",
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [ // 规则创建的用户群信息, list size 为 1
    {
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ],
  "failed_partition_count": 0, // 失败的 partition 数, Type:int
  "last_succeed_partition": { // 最后一次计算成功的 partition 信息,如果没有则不传
    "base_time": "string",
    "start_time": "string", // 计算的开始时间
    "finished_time": "string", // 计算的结束时间
    "user_count": 0, // 计算的用户数
    "status": "SUCCEED", // partition 的状态
    "rule_content_list": [
      {
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
  },
  "last_partition_info": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "next_partition_base_time": "string" // 下次计算的 base_time,单次用户群不返回
  }
}

2.5. 删除用户群

[DELETE /segmenter/rule/{id} 删除分群] 替换为 [DELETE /v2/user_groups/{id} 删除用户群]

  • Response 200
{}

2.6. 检查用户群执行状态

[POST /segmenter/status 检查分群执行状态] 替换为 [GET /v2/user_tags/{id}/status 检查标签执行状态]

  • Request(In Path):
    • base_time_list:用户群的 Partition 对应的 base_time,Type:List<String>,缺省则返回最新一个 Partition 的状态
  • Response 200
[
  {
    "base_time": "string",
    "user_count": 0, // 对应 partition 的人数
    "status": "NEW", // partition 的状态
    "start_time": "string", // partition 计算开始时间
    "finished_time": "string" // partition 计算结束时间
  }
]

3. 标签 API(新增)

3.1. 创建一个标签

[PUT /v2/user_tags 创建标签]

  • Request:
{
  "dir_id": 0, // 对应的目录 id,Type: int
  "name": "string",
  "cname": "string",
  "data_type": "BOOL",
  "unit": "HOUR",
  "source_type": 0,
  "is_routine": true, // 是否是例行标签,Type:boolean
  "comment": "string", // 标签的注释
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [ // 规则
    {
      "value": {}, // 每个规则对应的计算结果,如:用户消费水平高。
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    },
    {
      "value": {}, // 每个规则对应的计算结果,如:用户消费水平中
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ]
}
  • Response 200
{
  "id": 0,
  "dir_id": 0,
  "name": "string",
  "cname": "string",
  "data_type": "BOOL",
  "unit": "HOUR",
  "source_type": 0,
  "is_routine": true,
  "comment": "string",
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [
    {
      "sql": "string",
      "value": {},
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ],
  "last_succeed_partition": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
  },
  "last_partition_info": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "next_partition_base_time": "string"
  }
}

3.2. 更新标签配置

[PUT /v2/user_tags/{id} 更新标签配置]

  • Request:
{
  "dir_id": 0, // 对应的目录 id,Type: int
  "name": "string",
  "cname": "string",
  "data_type": "BOOL",
  "unit": "HOUR",
  "source_type": 0,
  "is_routine": true, // 是否是例行标签,Type:boolean
  "comment": "string", // 标签的注释
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [ // 规则
    {
      "value": {}, // 每个规则对应的计算结果,如:用户消费水平高。
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    },
    {
      "value": {}, // 每个规则对应的计算结果,如:用户消费水平中
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ]
}
  • Response 200
{
  "id": 0,
  "dir_id": 0,
  "name": "string",
  "cname": "string",
  "data_type": "BOOL",
  "unit": "HOUR",
  "source_type": 0,
  "is_routine": true,
  "comment": "string",
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [
    {
      "sql": "string",
      "value": {},
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ],
  "last_succeed_partition": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
  },
  "last_partition_info": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "next_partition_base_time": "string"
  }
}

3.3. 获取标签列表

[GET /v2/user_tags 获取标签列表]

  • Response 200
[
  {
    "id": 0,
    "dir_id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true,
    "comment": "string",
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "last_succeed_partition": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "rule_content_list": [
        {
          "sql": "string",
          "value": {},
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string"
    }
  }
]

3.4. 获取标签元信息

[GET /v2/user_tags/{id} 获取标签元信息]

  • Response 200
{
  "id": 0,
  "dir_id": 0,
  "name": "string",
  "cname": "string",
  "data_type": "BOOL",
  "unit": "HOUR",
  "source_type": 0,
  "is_routine": true,
  "comment": "string",
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [
    {
      "sql": "string",
      "value": {},
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ],
  "last_succeed_partition": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
  },
  "last_partition_info": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "next_partition_base_time": "string"
  }
}

3.5. 删除标签

DELETE /v2/user_tags/{id} 删除标签

  • Response 200
{}

3.6. 修改标签调度状态

[PATCH /v2/user_tags/{id} 修改标签的调度状态]

  • Request:
{
  "status": 标签目标状态,Type:String,Available Values:PENDING, RUNNING, SUSPEND。PENDING 待审批,RUNNING 正常运行,SUSPEND 已暂停
  // 注:标签状态只有在 RUNNING 时才能正常计算,新建标签的状态为 PENDING
}
  • Resonse 200
{
  "id": 0,
  "dir_id": 0,
  "name": "string",
  "cname": "string",
  "data_type": "BOOL",
  "unit": "HOUR",
  "source_type": 0,
  "is_routine": true,
  "comment": "string",
  "cron": "string",
  "app_push_list": [
    0
  ],
  "rule_content_list": [
    {
      "sql": "string",
      "value": {},
      "type": "string",
      "relation": "string",
      "rules": [
        {}
      ]
    }
  ],
  "last_succeed_partition": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
  },
  "last_partition_info": {
    "base_time": "string",
    "start_time": "string",
    "finished_time": "string",
    "user_count": 0,
    "status": "NEW",
    "next_partition_base_time": "string"
  }
}

3.7. 执行标签

[POST /v2/user_tags/{id}/execute 执行标签]

  • Request(In Path 可缺省,缺省则执行最近一个 partition):
    • base_time_list:Type: List<String>,Partition 的 base_time 列表
  • Response 200
{}

3.8. 检查标签执行状态

[GET /v2/user_tags/{id}/status]

  • Request(In Path 可缺省):
    • base_time_list:Type:List<String>,Partition 对应的 base_time 列表,缺省则返回最后一个的执行状态
  • Response 200
[
  {
    "base_time": "string",
    "user_count": 0,
    "status": "NEW",
    "start_time": "string",
    "finished_time": "string"
  }
]

3.9. 获取标签详情

[POST /v2/user_tags/{id}/report] 获取标签详情

  • Request:
{
  "from_date": "string",
  "to_date": "string",
  "bucket_param": [ // 对于数据类型为 NUMBER 或 LIST 的可以设置 bucket_param 进行分组。
    // 离散时间:bucket_param 设置为 [1]
    // 离散数字:bucket_param 设置为 [null]
    // 默认分组规则可省略此参数
    0
  ],
  "limit": 0
}
  • Response 200
{
  "aggregate_result": { // 聚合的结果
    "series": [
      "string"
    ],
    "rows": [
      {
        "by_value": "string",
        "partition_values": [
          {
            "user_count": 0,
            "percent": 0,
            "base_time": "string",
            "finished_time": "string"
          }
        ]
      }
    ]
  },
  "non_aggregate_result": { // 非聚合结果
    "series": [
      "string"
    ],
    "rows": [
      {
        "by_value": "string",
        "partition_values": [
          {
            "user_count": 0,
            "percent": 0,
            "base_time": "string",
            "finished_time": "string"
          }
        ]
      }
    ]
  }
}

3.10. 获取标签的完整目录结构

[GET /v2/user_tags/dirs]

  • Response 200
[
  {
    "type": "string",
    "id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "is_default": true,
    "items": [
      null
    ]
  }
]

3.11. 更新标签的目录结构

[PUT /v2/user_tags/dirs]

  • Request
[
  {
    "type": "string",
    "id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "is_default": true,
    "items": [
      null
    ]
  }
]
  • Response 200
{}

3.12. 删除目录,只能进行目录的删除

[DELETE /v2/user_tags/dirs]

  • Request:
[
  目录的 id 列表。**只能删除目录,并且需要确认删除的目录中没有标签才能进行删除**
] 
  • Response
{}