You need to enable JavaScript to run this app.
导航
开放接口V3
最近更新时间:2024.08.05 11:55:44首次发布时间:2022.08.17 15:51:53

一. 概述

本文档提供「A/B测试」应用中开放接口V3版本的说明。
可用范围包括

  • 实验信息:创建实验、获取实验详情、获取实验列表、修改实验、开始实验、结束实验
  • 指标信息:创建指标、删除指标、获取指标详情、获取指标列表、全量修改指标信息、修改指标状态
  • 互斥组信息:获取互斥组列表、新建互斥组
  • 报告页信息:获取实验报告基础数据

如需使用老版本开放接口,请参考:A/B测试开放接口

二. 联系开通

为了保证您和用户的数据安全,开放接口权限默认是关闭的。
在开始使用之前,您需要联系我们开通。(您可以通过服务对接的飞书/微信群或页面右下角的在线客服与我们取得联系)

  • 开通后,我们会为您提供导出所需的AK/SK,收到后请务必妥善保管和使用。
  • 开通时请和对接人员确认需要开放的接口范围以及接口使用额度,不在开放范围内的接口以及超出限额的接口请求将被拒绝。

三. 使用方式

为了方便集成和使用OpenAPI,我们提供了SDK。其主要功能是提供了对签名过程和复杂查询参数的包装。
SDK已经在 Github 上开源,建议使用Github 源码的方式进行集成。
基本使用流程为:

  1. 根据ak, sk, API 服务地址初始化一个RangersClient
  2. 使用RangersClient的request接口或者data_tester来调用具体API(具体的方法名称在不同的语言上会有命名格式的区别)

由于中国区和非中国区是隔离不互通的,OpenAPI 的服务地址需要根据所在地区进行设置:

  • 中国区:https://analytics.volcengineapi.com
  • 非中国区: https://analytics.byteplusapi.com
  • 私有化部署:根据私有化部署的环境来获取,即产品的域名地址。

SDK使用说明

Java

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-java
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-java/raw/main/release/javasdk.zip
  • 初始化示例:
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

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-py
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-py/raw/main/release/rangersdk-1.2.0.tar.gz

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())

Golang

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-go
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-go/raw/main/release/gosdk.zip
  • 初始化示例:
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))

JS

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-js
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-js/raw/main/release/nodejssdk.zip
  • 初始化示例:
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));

PHP

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-php
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-php/raw/main/release/phpsdk.zip
  • 初始化示例:
$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");

SDK使用注意

中文编码

获取列表的相关接口(实验、指标、互斥组)支持根据关键字查询,如需查询中文,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两个参数:

  • id:int类型,必填,表示用户ID。
  • name:string类型,必填,表示用户名。

您可以使用用户信息查询接口获取实验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结构说明。

注意

  • 配置mab组和对应的非mab组的配置要相同,也就是mab和非mab组的配置是一对一对的。具体参见下文的例子,例如智能调优组"对照组"和评估组"对照组-Besfw"是一一对应的。
  • 私有化480版本mab核心指标只支持单事件转化率类型的指标,uv_per_dau(算子为:转化率)。

version结构说明

参数名称

参数类型

是否必填

描述

备注

type

int

对照版本/实验版本

0-对照版本,1-实验版本 versions数组中只能有一个对照版本

name

string

版本名称

长度50字符

description

string

版本描述

长度1000字符

weight

float

实验版本的流量分配

范围[0.001, 1] 0.1% ~ 100%
versions数组中不传,则默认均匀分配 如果传,则会校验所有weight的和是否为1

config

object

版本配置

version数组中所有config的key需要保持一致 { "key1": "value1", "key2": "value2" }

users

string[]

白名单用户

不同版本的白名单用户不能有交集

is_mab

int

是否为mab智能流量组,取值:0或1

layer_info结构说明

参数名称

参数类型

是否必填

描述

备注

layer_id

int

互斥组ID

使用的实验层,使用默认层则传-1或不传
如果指定了layer_id,则会校验实验层上可用流量是否满足实验配置

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信息列表,包含以下字段:

  • id:int,账号ID
  • name:string,用户名
  • account:string,用户账号名称

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": [],
"page": {
"current_page": 1, // 当前页
"total_pages": 0, // 总页数
"total_items": 0 // 总条目数
}
}

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来区分是全量修改还是部分修改

  • 全量修改:Method=PUT。请求参数中的所有必填参数必须包含。
  • 部分修改:Method=PATCH。可以任意传递支持的配置参数,请求体中有的参数,才会进行校验与修改,请求体中没有的参数,则会保持现状。

注意:由于使用的网络库本身不支持不支持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%
versions数组中不传,则默认均匀分配
如果传,则会校验所有weight的和是否为1

config

object

版本参数不同版本的 key
需要保持一致

version数组中所有config的key需要保持一致
{ "key1": "value1", "key2": "value2" }

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

数据展示类型

枚举值
number_0, number_1, number_2, number_3, number_4, number_5,
percent_0, percent_1, percent_2, percent_3, percent_4, percent_5
默认为percent_4,即百分数四位小数

返回值

参数名称

类型

说明

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

{
"metrics": [],
"page": {
"current_page": 1, // 当前页
"total_pages": 0, // 总页数
"total_items": 0 // 总条目数
}
}

指标信息说明

参数名称

类型

说明

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

指标数据类型

枚举值
number_0, number_1, number_2, number_3, number_4, number_5,
percent_0, percent_1, percent_2, percent_3, percent_4, percent_5
默认为percent_4,即百分数四位小数

返回值

参数名称

类型

说明

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

{
"layers": [],
"page": {
"current_page": 1, // 当前页
"total_pages": 0, // 总页数
"total_items": 0 // 总条目数
}
}

互斥组信息说明

参数名称

类型

说明

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查询或修改