本文档提供「A/B测试」应用中开放接口V3版本的说明。
可用范围包括
如需使用老版本开放接口,请参考:A/B测试开放接口
为了保证您和用户的数据安全,开放接口权限默认是关闭的。
在开始使用之前,您需要联系我们开通。(您可以通过服务对接的飞书/微信群或页面右下角的在线客服与我们取得联系)
为了方便集成和使用OpenAPI,我们提供了SDK。其主要功能是提供了对签名过程和复杂查询参数的包装。
SDK已经在 Github 上开源,建议使用Github 源码的方式进行集成。
基本使用流程为:
request
接口或者data_tester
来调用具体API(具体的方法名称在不同的语言上会有命名格式的区别)由于中国区和非中国区是隔离不互通的,OpenAPI 的服务地址需要根据所在地区进行设置:
String ak = "{使用AK替换}"; String sk = "{使用SK替换}"; // SDK 的默认url地址是指向中国区 SAAS 的 RangersClient bc = new RangersClient(ak, sk); // 海外和私有化需要指定url地址, 可以参考上文 String url="{使用非中国区或者Tester服务域名替换}"; RangersClient bc = new RangersClient(ak, sk, url); String result = bc.dataTester("/openapi/v1/openapi-test", "GET"); System.out.println(result);
Python SDK 软件包的形式下载后在shell执行以下命令完成安装:
# python需要3.7及以上版本 pip install rangersdk-${version}.tar.gz
from rangersdk import RangersClient ak = '{使用AK替换}' sk = '{使用SK替换}' bc = RangersClient(ak, sk) # 海外和私有化需要指定url地址, 可以参考上文, url = '{使用非中国区或者Tester服务域名替换}' # 注意这里传参数,一定要写成 url=url bc = RangersClient(ak, sk, url=url) re = bc.data_tester("/openapi/v1/openapi-test", method="GET") print(re.json())
var ( ak = "{使用AK替换}" sk = "{使用SK替换}" ) bc := dslcontent.NewRangersClient(ak, sk) // 海外和私有化需要指定url地址, 可以参考上文 url = '{使用非中国区或者Tester服务域名替换}' bc := dslcontent.NewRangersClientWithUrl(ak, sk, url) res, _ := bc.DataTester("/openapi/v1/openapi-test", "GET") data, err := ioutil.ReadAll(res.Body) fmt.Println(err, string(data))
ak = "{使用AK替换}" sk = "{使用SK替换}" bc = new RangersClient(ak, sk) // 海外和私有化需要指定url地址, 可以参考上文 url = '{使用非中国区或者Tester服务域名替换}' bc = RangersClient(ak, sk, url=url) bc.dataTester("/openapi/v1/openapi-test", {method: "GET"}) .then(res => res.json()) .then(response => { if (200 !== response['code']) { throw " result is not ok, code: " + response['code'] + ", message: " + response['message']; } console.log(response) console.log('success.') }) .catch(error => console.error('error:', error));
$ak = "{使用AK替换}"; $sk = "{使用SK替换}"; $bc = new RangersClient($ak, $sk); // 海外和私有化需要指定url地址, 可以参考上文 $url = '{使用非中国区或者Tester服务域名替换}' $bc = new RangersClient($ak, $sk, $url); echo $bc->dataTester("/openapi/v1/openapi-test", "GET");
获取列表的相关接口(实验、指标、互斥组)支持根据关键字查询,如需查询中文,Java、Python、PHP需要调用前自行进行url转码,转码方法如下
golang SDK和nodeJs SDK不需要自行转码
Java
import java.net.URLEncoder; String keyword = URLEncoder.encode("中文关键字", "UTF-8")
Python
import urllib.parse keyword = urllib.parse.quote("中文关键字", encoding="UTF-8")
PHP
$keyword = urlencode("中文关键字");
注意
开放接口所创建的实验,仅管理员可编辑
接口描述: 创建一个编程实验或MAB实验。
请求路径:/openapi/v3/apps/{app_id}/experiments
请求方法:POST
请求参数
参数名称 | 参数类型 | 是否必填 | 描述 | 备注 |
---|---|---|---|---|
name | string | 是 | 实验名称 | 不能与当前APP下已有实验重名,长度限制200字符 |
description | string | 否 | 实验描述 | 长度限制1000字符 |
tags | string | 否 | 实验标签 | ["123", "456"] |
owners | object | 否 | 创建人 | 实验owner列表,owner的object数据结构包括id和name两个参数:
您可以使用用户信息查询接口获取实验owners的数值。 |
endpoint_type | int | 是 | 实验类型 | 0-客户端实验,1-服务端实验 |
duration | int | 是 | 实验时长 | 单位天,范围:[1, 365] |
major_metric | int | 是 | 核心指标ID | 必须在metrics中 |
metrics | int[] | 是 | 关注的指标ID列表 | 必须包含major_metric |
versions | object[] | 是 | 实验版本配置 | 数组长度要大于等于2,详见version结构说明 |
layer_info | object | 是 | 实验层配置 | 详见layer_info说明 |
mab_info | object | 否 | MAB实验配置信息 | 如果是创建MAB实验,该字段必传。详细介绍请参见下文的mab_info结构说明。 |
注意
version结构说明
参数名称 | 参数类型 | 是否必填 | 描述 | 备注 |
---|---|---|---|---|
type | int | 是 | 对照版本/实验版本 | 0-对照版本,1-实验版本 versions数组中只能有一个对照版本 |
name | string | 是 | 版本名称 | 长度50字符 |
description | string | 否 | 版本描述 | 长度1000字符 |
weight | float | 否 | 实验版本的流量分配 | 范围[0.001, 1] 0.1% ~ 100% |
config | object | 是 | 版本配置 | version数组中所有config的key需要保持一致 { "key1": "value1", "key2": "value2" } |
users | string[] | 否 | 白名单用户 | 不同版本的白名单用户不能有交集 |
is_mab | int | 否 | 是否为mab智能流量组,取值:0或1 |
layer_info结构说明
参数名称 | 参数类型 | 是否必填 | 描述 | 备注 |
---|---|---|---|---|
layer_id | int | 否 | 互斥组ID | 使用的实验层,使用默认层则传-1或不传 |
version_resource | float | 是 | 实验流量占比 | 范围[0.001, 1],最小精度千分之一 |
mab_info结构说明
参数名称 | 参数类型 | 是否必填 | 描述 | 备注 |
---|---|---|---|---|
baseline | int | 是 | 兜底流量 | 百分比,例如3即为3%。 |
interval_time | int | 是 | 调优间隔,单位:秒 | 单位秒,最小间隔30分钟,并且按照30分钟增加,例如1800, 3600, 5400。 |
non_mab_traffic | int | 是 | 评估流量占比 | 百分比,例如6就是6%,每个实验组最低需要3%的评估流量,例如三个实验组最低需要9%的评估流量。 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | int | 新创建实验ID |
示例
编程实验,两个评估组,两个智能调优组,一共4个组,调优间隔30分钟,评估流量6%。
{ "name": "test-mab", "duration": 14, "versions": [ { "name": "对照组", "label": "对照组", "weight": 0.47, "is_mab": 1, "type": 0, "config": { "HcCVhO": "_Lf5XM" }, "users": [] }, { "name": "实验组1", "label": "实验组1", "weight": 0.47, "is_mab": 1, "type": 1, "config": { "HcCVhO": "TAqqd4" }, "users": [] }, { "name": "对照组-Besfw", "label": "对照组", "weight": 0.03, "is_mab": 0, "type": 1, "config": { "HcCVhO": "ij45wC" }, "users": [] }, { "name": "实验组1-fL17k", "label": "实验组1", "weight": 0.03, "is_mab": 0, "type": 1, "config": { "HcCVhO": "WRDoSW" }, "users": [] } ], "major_metric": 100942, "metrics": [ 100940, 100941, 100942, 100943, 100944, 100945, 100946 ], "mode": 1, "mab_info": { "interval_time": 1800, "non_mab_traffic": 6 }, "endpoint_type": 0, "layer_info": { "layer_id": -1, "version_resource": 1 } }
说明: 根据实验ID获取实验详情
请求路径:/openapi/v3/apps/{app_id}/experiments/{experiment_id}
请求方法:GET
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 接口返回的实验信息 |
data信息
参数名称 | 类型 | 说明 |
---|---|---|
experiment | object | 实验信息 |
experiment结构说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 实验的experiment_id |
name | string | 实验名称 |
tags | string | 实验标签列表 |
owners | object | owner信息列表,包含以下字段:
|
launch_start_time | long | 实验开始时间,Unix时间戳 |
end_time | long | 实验结束时间,Unix时间戳 |
create_time | long | 实验创建时间,Unix时间戳 |
modify_time | long | 实验修改时间,Unix时间戳 |
test_start_time | long | 实验调试开始时间,Unix时间戳 |
duration | long | 实验运行时间,单位秒 |
confidence_level | int | 置信度水平,95代表置信度水平为95% |
version_resource | float | 实验所占流量,范围[0.001, 1],1为100% |
layer_id | int | 实验层id |
freeze_status | int | 实验冻结状态 1-冻结,0-没冻结 |
freeze_time | long | 实验冻结时间,Unix时间戳(只有冻结状态为1时才有效) |
version_freeze_status | int | 是否进组不出组 1-是 0-否 |
pause_status | int | 实验是否暂停 1-暂停 0-不暂停 |
endpoint_type | int | 0-客户端实验,1-服务端实验 |
versions | object[] | 实验版本信息 |
metrics | object[] | 实验关注指标信息 |
status | int/enum | 实验状态, 0:已结束 1:运行中 2: 待调度 3:调试中 |
filters | string | 实验受众目标,json字符串 |
description | string | 实验描述 |
metric结构说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 指标id |
name | string | 指标名称 |
description | string | 指标描述 |
is_primary | int | 是否核心指标:0-否 1-是 |
calculate_type | string | 指标计算类型 |
dsl | object | 指标dsl |
status | int | 指标状态 0: 已下线 1:没下线 |
is_composed | boolean | 是否组合指标:true/false |
data_type | string | 指标展现数值格式 |
version结构说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 版本id |
type | int | 版本类型:0-对照版本,1-实验版本 |
name | string | 版本名称 |
description | string | 版本描述 |
config | object | 版本配置 { "key1": "value1", "key2": "value2" } |
weight | int | 版本权重,和为1000,1代表0.1% 为0则为均匀分配 |
user_list | string[] | 白名单列表 |
说明: 分页获取APP下的实验列表
注意:如果搜索关键字keyword包含中文,则需要先进行url转义,再进行调用
请求路径:/openapi/v3/apps/<app_id>/experiments
请求方法:GET
URL查询参数
参数 | 类型 | 说明 |
---|---|---|
status | int | 实验状态,0-已结束,1-运行中,3-测试中;不传则默认所有状态 |
page | int | 分页参数,1表示第一页,不传默认为1 |
page_size | int | 每页数量,不传默认99 |
keyword | string | 搜索关键字,当前支持按照实验name和description模糊搜索 |
sort_by | string | 排序规则。当前仅支持 end_time结束时间、launch_start_time实验启动时间、test_start_time测试开始时间; 不传默认实验创建时间 |
sort_order | string | 排序顺序。desc/asc。不传默认desc降序 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | { |
experiments结构说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 实验ID |
name | string | 实验名称 |
end_time | long | 实验结束时间,Unix时间戳 |
test_start_time | long | 实验调试开始时间,Unix时间戳 |
launch_start_time | long | 实验开始时间,Unix时间戳 |
duration | long | 实验运行时间,单位秒 |
version_resource | float | 实验所占流量,范围[0.001, 1],1为100% |
layer_id | int | 实验层id |
freeze_status | int | 实验冻结状态 1-冻结,0-没冻结 |
freeze_time | long | 实验冻结时间,Unix时间戳(只有冻结状态为1时才有效) |
version_freeze_status | int | 是否进组不出组 1-是 0-否 |
pause_status | int | 实验是否暂停 1-暂停 0-不暂停 |
endpoint_type | int | 0-客户端实验,1-服务端实验 |
description | string | 实验描述 |
status | int/enum | 实验状态, 0:已结束 1:运行中 2: 待调度 3:调试中 |
owner | 字符串 | 实验创建人 |
versions | object[] | 实验版本信息 |
说明: 修改实验的配置信息。通过Method来区分是全量修改还是部分修改。
注意:由于使用的网络库本身不支持不支持PATCH方法,因此Java SDK暂不支持PATCH方法
请求路径:/openapi/v3/apps/{app_id}/experiments/<experiment_id>
请求方法:PUT/PATCH
请求参数
参数名称 | 参数类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
name | string | 是 | 实验名称 | 不能与已有实验重名,长度50字符 |
description | string | 否 | 实验描述 | 长度1000字符 |
tags | string | 否 | 实验标签 | ["123", "456"] |
owners | object | 否 | 创建人 | 实验owner列表 |
duration | int | 是 | 实验时长 | 单位天,[1, 365],整数 |
major_metric | int | 是 | 核心指标 ID | 运行中不可修改 测试中可以修改 |
metrics | int[] | 是 | 指标ID列表 | |
versions | object[] | 是 | 实验版本 | version数量不可变动,只可以修改version内容 |
layer_info | object | 否 | 互斥组 |
version结构
参数名称 | 参数类型 | 是否必填 | 描述 | 备注 |
---|---|---|---|---|
id | int | 是 | 版本ID | 修改version信息必填 |
name | string | 是 | 版本名称 | 长度50字符 |
description | string | 否 | 版本描述 | 长度1000字符 |
weight | float | 否 | 流量分配 | 范围[0.001, 1] 0.1% ~ 100% |
config | object | 是 | 版本参数不同版本的 key | version数组中所有config的key需要保持一致 |
users | string[] | 否 | 白名单用户 |
layer_info结构
参数名称 | 参数类型 | 是否必填 | 描述 | 备注 |
---|---|---|---|---|
layer_id | int | 否 | 互斥组 ID | |
version_resource | float | 是 | 占用流量百分比 | 范围[0.001, 1],最小精度千分之一 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 实验ID |
说明: 开始一个测试中的实验。使其状态变为运行中。
请求路径: /openapi/v3/apps/<app_id>/experiments/<experiment_id>/launch
请求方法: PUT
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 实验ID |
说明: 暂停指定实验
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/pause
请求方法: POST
请求参数
参数名称 | 类型 | 说明 |
---|---|---|
duration | int | 暂停某个实验时,实验流量是平滑生效的,通过此参数设置平滑生效的时间是多少分钟 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
说明: 恢复指定实验
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/restore
请求方法: POST
请求参数
参数名称 | 类型 | 说明 |
---|---|---|
duration | int | 恢复某个实验时,实验流量是平滑生效的,通过此参数设置平滑生效的时间是多少分钟 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
说明: 结束指定实验
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/stop
请求方法: PUT
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 实验ID |
说明: 创建一个A/B测试指标
请求路径: /openapi/v3/apps/<app_id>/metrics
请求方法:POST
请求参数
参数名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
name | string | 是 | 指标名称 | 长度限制 50,不可与相同APP下其他指标重复 |
description | string | 否 | 指标描述 | 长度限制 1000 |
dsl | object | 是 | 指标DSL | dsl详情可咨询对接人员 |
composed | boolean | 是 | 是否是组合指标 | true/false |
data_type | string | 否 | 数据展示类型 | 枚举值 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | int | 指标ID |
说明: 基于现存的A/B测试指标,通过修改其中的属性过滤信息,创建新的A/B测试指标。只会替换模板指标中同名的属性值,模板指标中不存在的属性会忽略。如果传入多个 metrics,要修改的属性信息会分别应用于每个 metric。
可以简单理解为把每个模板指标都复制一份,然后修改其已存在的 property 信息。
请求路径: /openapi/v3/apps/<app_id>/metrics/create-from-templates
请求方法: POST
请求参数
参数名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
metrics | list[metric] | 是 | 指标信息列表 | metric 见下表说明 |
properties | list[property] | 是 | 需要修改的属性信息 | property 见下表说明 |
metric字段说明
参数名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
metric_id | int | 是 | 模板指标id | 已存在的指标id |
name | string | 是 | 根据模板指标,新建指标的名称 | 长度限制 50,不可与相同APP下其他指标重复 |
description | string | 否 | 根据模板指标,新建指标的指标信息 | 长度限制 1000 |
property字段说明
参数名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
property_name | string | 是 | 属性名称 | 模板中不存在的属性名会直接忽略,不报错 |
property_values | string/int/float数组 | 是 | 属性值 | 长度限制255,如果为空,则是[];属性值类型需要与模板指标的属性类型保持一致。具体字段说明可参考 V3 DSL 字段详细说明 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | list[object] | 新创建的指标信息 |
object字段说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 新创建的指标ID |
name | string | 新创建的指标名称 |
curl --location --request POST '{host}/datatester/openapi/v3/apps/253047/metrics/create-from-template' \ --header 'Content-Type: application/json' \ --data-raw '{ "metrics": [ { "metric_id": 33487, "name": "测试一下事件指标5", "description": "这是一个description" }, { "metric_id": 33488, "name": "测试一下事件指标6", "description": "这是一个description" } ], "properties": [ { "property_name": "app_channel", "property_values": [ "channel3", "channel4" ] }, { "property_name": "account_id", "property_values": [ "1234556", "7654321" ] } ] }'
说明: 删除指定的指标。如果指标有已经关联的实验,则无法删除
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: DELETE
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | int | 指标ID |
说明: 获取指定指标的详情数据
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: GET
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 指标信息 {"metric_info": } |
指标信息说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 指标ID |
name | string | 指标名 |
description | string | 描述 |
dsl | object | 指标dsl |
composed | boolean | 是否是组合指标 |
status | int | 状态 0-下线 1-上线 |
is_support_major | boolean | 是否支持设置为核心指标 |
is_required | int | 是否是必看指标,0:不是,1:是 |
metric_group | object | 该指标所属的指标组信息,详情见下文的metric_group结构说明 |
metric_group结构说明
参数名称 | 参数类型 | 描述 |
---|---|---|
id | int | 指标组ID |
name | string | 指标组名称 |
uba_report_type | int | 指标组类型,枚举值:1-事件指标;2-留存指标;3-漏斗指标 |
说明: 分页获取APP下的指标列表
请求路径:/openapi/v3/apps/<app_id>/metrics
请求方法:GET
URL查询参数
参数 | 类型 | 说明 |
---|---|---|
status | int | 指标状态,0-下线 1-上线,不传则默认所有状态 |
page | int | 分页参数,1表示第一页,不传默认为1 |
page_size | int | 每页数量,不传默认99 |
keyword | string | 搜索关键字,当前支持按照指标name和description模糊搜索 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | { |
指标信息说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 指标ID |
name | string | 指标名 |
description | string | 描述 |
dsl | object | 指标dsl |
composed | boolean | 是否是组合指标 |
status | int | 状态 0-下线 1-上线 |
is_support_major | boolean | 是否支持设置为核心指标 |
说明: 全量修改指标的信息,DSL暂时无法修改,只可以修改名称、描述和数据类型
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: PUT
请求体
参数名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
name | string | 是 | 指标名称 | 最大长度50,不可重复 |
description | string | 否 | 指标描述 | 最大长度1000 |
data_type | string | 否 | 指标数据类型 | 枚举值 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | int | 指标ID |
说明: 修改指标的状态(上线、下线)。JAVA SDK暂不支持此接口
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: PATCH
请求体
参数名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
status | int | 是 | 指标状态 | 0-下线 1-上线 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | int | 指标ID |
说明: 分页获取APP下互斥组的列表
请求路径: /openapi/v3/apps/<app_id>/layers
请求方法: GET
URL查询参数
参数 | 类型 | 说明 |
---|---|---|
keyword | string | 查询关键字,可以根据name和description模糊查询 |
endpoint_type | int | 互斥组的端类型。0-客户端层,1-服务端层 |
page | int | 查询页码。默认为1 |
page_size | int | 每页数量,默认为99 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | { |
互斥组信息说明
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 互斥组ID |
name | string | 互斥组名 |
description | string | 描述 |
endpoint_type | int | 端类型,0-客户端层,1-服务端层 |
available_traffic | int | 剩余流量,1000代表100% |
说明: 创建一个新的互斥组
请求路径: /openapi/v3/apps/<app_id>/layers
请求方法: POST
请求参数
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
name | string | 是 | 互斥组名,长度限制50 |
description | string | 否 | 描述,长度限制1000 |
endpoint_type | int | 是 | 端类型,0-客户端层,1-服务端层 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | int | 互斥组ID |
说明
当前实验报告相关数据获取仅支持天粒度的数据获取,暂不支持小时等更细粒度的数据。
说明:用于获取实验报告分组结论概览。
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/summary-data
请求方法: GET
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 报告数据,详情请参见下文的报告数据结构说明。 |
报告数据结构说明
参数名称 | 参数类型 | 描述 |
---|---|---|
summary_infos | list[object] | 报告概览数据,详情请参见下文的summary_infos结构说明。 |
report_type | string | 报告类型:day。表示报告的查询时间粒度为天级 |
start_ts | int | 查询开始时间,UNIX时间戳 |
end_ts | int | 查询结束时间,UNIX时间戳 |
user_data | object | 各版本进组人数 |
summary_infos结构说明
参数名称 | 参数类型 | 描述 |
---|---|---|
major_metric_name | string | 核心指标名称 |
summary | list[object] | 指标概览数据 |
返回示例
{ "code": 200, "data": { "summary_infos": [ { "major_metric_name": "any转化率", "summary": [ { "vid": 339601, "version_name": "8b4b2cfdbd73941123bce96f9ce541e2", "confidence": 3, "conf_interval": [ -0.08904, 0.08904 ], "p": 1.0 } ] } ], "user_data": { "339600": 799, "339601": 799 }, "start_ts": 1708822800, "end_ts": 1713801599, "report_type": "day" }, "message": "success" }
说明:用于获取实验报告分组结论概览
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/metric-data
请求方法: POST
请求参数
参数名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
metric_id | int | 是 | 指标ID | 您可以通过获取指标列表接口获取指标ID。 |
report_type | string | 是 | 查询类型 | 默认天级。当前仅支持 day,表示报告的查询时间粒度为天级。 |
start_ts | int | 是 | 查询开始时间,UNIX时间戳 | 默认实验开始时间,不可以早于实验开始时间 |
end_ts | int | 是 | 查询结束时间,UNIX时间戳 | 默认当前时间,不可以晚于实验结束时间 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 报告数据,详情请参见下文的报告数据结构说明。 |
报告数据结构说明
参数名称 | 参数类型 | 描述 |
---|---|---|
versions | list[object] | 实验版本信息,详情请参见下文的版本信息结构说明。 |
start_ts | int | 查询开始时间,UNIX时间戳 |
end_ts | int | 查询结束时间,UNIX时间戳 |
available_start_ts | int | 可用报告开始时间,UNIX时间戳 说明 当查询的时间范围超出了真实的报告数据产出的时间范围时,调用接口的返回结果为报告有数据的时间范围内的数据,这里的可用报告开始/结束时间,指的是真实返回的报告数据的时间范围。 |
available_end_ts | int | 可用结束时间,UNIX时间戳 |
confidence_level | int | 置信度 |
metric_id | int | 指标ID |
distribution | object | 统计分布数据 |
daily_data | object | 天级报告数据 |
user_data | object | 各版本进组人数 |
版本信息结构说明
参数名称 | 参数类型 | 描述 |
---|---|---|
id | int | 版本ID |
name | string | 版本名称 |
config | object | 版本配置信息 |
type | int | 0:对照版本 1:实验版本 |
weight | int | 版本权重,0为均分 |
disabled | bool | 是否禁用 |
返回示例
{ "code": 200, "data": { "available_start_ts": 1708822800, "available_end_ts": 1713801599, "start_ts": 1708822800, "end_ts": 1713801599, "versions": [ { "id": "339600", "name": "版本1", "config": { "0304": "111" }, "type": 0, "weight": 0, "disabled": false }, { "id": "339601", "name": "版本2", "config": { "0304": "222" }, "type": 1, "weight": 0, "disabled": false } ], "confidence_level": 80, "metric_id": 99196, "distribution": { "339600": { "339601": { "p": 1.0, "m": 0.3416771, "change": 0.0, "change_rate": 0.0, "conf_interval": [ -0.08904, 0.08904 ], "half_interval": 0.0890367, "confidence": 3, "mean": { "339600": 0.3416771, "339601": 0.3416771 }, "variance": { "339600": 0.00028152, "339601": 0.00028152 }, "mde": 0.14750037, "sample_size": { "339600": 799, "339601": 799 }, "details": { "numerator": 273, "denominator": 799 } } }, "339601": { "339600": { "p": 0, "m": 0.3416771, "change": 0, "change_rate": 0, "conf_interval": [ 0, 0 ], "half_interval": 0, "confidence": 3, "mean": { "339601": 0, "339600": 0 }, "variance": { "339601": 0, "339600": 0 }, "details": { "numerator": 273, "denominator": 799 } } } }, "daily_data": { "2024-03-04": { "339600": { "339601": { "p": 1.0, "m": 0.3416771, "change": 0.0, "change_rate": 0.0, "conf_interval": [ -0.08904, 0.08904 ], "half_interval": 0.0890367, "confidence": 3, "mean": { "339600": 0, "339601": 0 }, "variance": { "339600": 0, "339601": 0 }, "mde": 0.14750037, "details": { "numerator": 273, "denominator": 799 } } }, "339601": { "339600": { "p": 0, "m": 0.3416771, "change": 0, "change_rate": 0, "conf_interval": [ 0, 0 ], "half_interval": 0, "confidence": 3, "mean": { "339601": 0, "339600": 0 }, "variance": { "339601": 0, "339600": 0 }, "details": { "numerator": 273, "denominator": 799 } } } } }, "boxplot": "The current indicator does not support box plots. Please refer to the explanation below for the specific reason.", "user_data": { "339600": 799, "339601": 799 } }, "message": "success" }
**说明:**用于查询用户信息(用户ID、用户名)。
路径: /datatester/openapi/v3/orgs/{org_id}/users
请求方法: GET
请求参数
参数名称 | 参数类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
name | string | 是 | 要搜索的用户名 | 模糊搜索 |
返回值
参数名称 | 类型 | 说明 |
---|---|---|
code | int | 接口返回状态,200为成功 |
message | string | 接口返回信息,成功时默认为success |
data | object | 接口返回的用户信息 |
data信息
参数名称 | 类型 | 说明 |
---|---|---|
user | object | 用户信息,包含id和name两个参数,详情见下文用户信息字段。 |
用户信息字段
参数名称 | 类型 | 说明 |
---|---|---|
id | int | 用户ID |
name | string | 用户名称 |
返回消息体里的code详细的定义
错误码 | 含义 |
---|---|
200 | 成功 |
403 | 对请求的资源(app、实验等)无权限 |
404 | 请求的资源不存在,如查询了不存在的实验ID或指标ID |
410 | 请求的资源已被删除 |
40000 | 缺少必填参数 |
40001 | 参数值错误 |
40003 | 对请求的接口无访问权限 |
40010 | 调用过于频繁(超过每秒调用次数限制) |
40011 | 超过每天调用次数限制 |
60001 | DSL格式错误 |
60002 | 指标有已关联实验,无法删除 |
60010 | 流量不足,无法创建实验 |
60011 | 实验的endpoint_type与所属互斥组不一致 |
60012 | 测试中实验无法被结束 |
60013 | 草稿态实验不可被openAPI查询或修改 |