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 

以下接口的 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
source_type用户群类型string1

规则创建的用户群

limit人群数量限制integer100

设置人群数量限制,会在计算用户群时随机取 limit 数值的人群

注:仅支持手动分群

2.1. 获取用户群列表

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",
      "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. 执行用户群

POST /v2/user_groups/{id}/execute 执行用户群

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

2.3. 获取用户群信息

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",
    "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.4. 删除用户群

DELETE /v2/user_groups/{id} 删除用户群

  • Response 200
{}

2.5. 检查用户群执行状态

GET /v2/user_groups/{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 计算结束时间
  }
]