简介

本文档描述了第三方软件服务商(以下简称ISV)接入京东云自动化营销平台,所需的接口,包括:京东云提供的API接口,以及ISV提供的API接口。默认为京东云提供接口,ISV提供的接口,会在接口名称后面以【ISV提供】标识。

业务名词释义

人群对象:人群标签的规则组,即文档中的search_id(人群对象ID)

人群对象实例:人群对象实例化后的结果集(对应人群快照),即文档中的package_id(人群对象实例ID,也称包ID)

京东云提供接口通用申明

权限认证


京东云提供的接口,默认采用京东云网关的鉴权,需要ISV在京东云注册账号,并且在京东云控制台创建Access Key(简称AK),并生成Access Key Secret(简称SK)。ISV将Access Key提供给京东云侧人员,由京东云对AK进行请求授权,生成SDK(现在提供java和python的sdk,其它开发语言,请通过HTTP方式调用),将SDK交由ISV。ISV在项目中引入 SDK,通过AK、SK,请求京东云的API。

生成AK和SK

注册京东云后登录京东云,进入控制台(https://console.jdcloud.com/overview),点击右上角个人信息,进入Access Key管理。

按步骤创建AK和SK即可。

编码方式


若无特殊说明或应答头中的 Content-Type 未指定编码,请求和应答中的字符编码均使用 utf-8(无 BOM 头)。

API请求

HTTPMethod

目前接口HTTP Method有GET和POST。

HTTPHeader

请求方法为 GET,不需要指定Content-Type。
请求方法为POST,Content-Type 应为 application/json; charset=UTF-8。

API应答

HttpHeader

Content-Type: application/json; charset=UTF-8。

HTTPBody

所有接口响应参数格式如下:

名称 类型 是否必填 描述
code String 状态码 0=调用成功,非0=调用失败
msg String 错误信息
data Json code=0时,返回业务数据,具体返回内容见各接口定义。code!=0时,返回null。

ISV提供接口通用申明

===================

编码方式


若无特殊说明或应答头中的 Content-Type 未指定编码,请求和应答中的字符编码均使用 utf-8(无 BOM 头)。

Token校验


描述

为保证通信安全,调用ISV接口时参数中会添加一个token作为安全令牌。ISV收到请求后根据生成规则生成 token 值,并与接口参数中获取的 token 值进行比较,完全相同即为校验通过。token值由每次传递的参数和双方约定key共同决定。

Key值获取

由ISV提供,建议生成规则:32位长度,大写字母+小写字母+数字。

token值生成

说明

token值作为安全校验必有参数,运营后台每次调用ISV接口参数中都会带有 token 值。服务商根据生成规则生成 token值,并与接口中获取的 token 值进行比较。完全相同即为校验通过。

生成规则

取每次http get和post 请求参数中除token以外的其它所有参数,排除值为空的参数,对参数名进行字典排序,并且对参数进行请求地址encode,编码类型为utf-8,在排序后的字符串最后加上 &key=[约定key值],然后对整个字符串进行 md5 加密,加密后的字符串作为token值。

示例

  • ISV收到的请求示例:
http://www.isvwebsite.com?p1=1&p2=2&p3=3&token=xxxx
  • 进行排序操作:排除值为空的参数,遍历对每个参数进行请求地址encode
sort(P1,P2,P3);
  • token值:对拼接后字符串进行MD5加密,注意:不需要进行请求地址 encode
“p1=1&p2=2&p3=3&key=isvkey”.toMD5()

京东云联合登录


品牌商登录ISV系统,需要使用京东云联合登录。帮助文档如下:

  1. 创建应用地址:

ISV提供京东云pin,我们为其开通灰度权限后,可在此看到菜单:管理-身份认证-应用管理

或者直接访问URL:https://ias-console.jdcloud.com/ias/apps

  1. 文档:

请查看PDF文档 京东云OAuth2.0服务对接说明

API请求


HTTPMethod

目前接口HTTP Method有GET和POST

HTTPHeader

请求方法为 GET,不需要指定Content-Type。

请求方法为POST,Content-Type 应为 application/json; charset=UTF-8。

API应答


HttpHeader

Content-Type: application/json; charset=UTF-8。

HTTPBody

所有接口响应参数格式如下:

名称 类型 是否必填 描述
code String 状态码 0=调用成功,非0=调用失败
msg String 错误信息
data Json code=0时候的返回数据

接口描述

========

品牌商相关


  1. 创建品牌商账号【ISV提供】

说明

京东云侧创建完品牌商账号后,需要将品牌商信息同步给ISV系统。

请求

请求地址:/JDCloud/master/sync

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
master_name String 品牌商名称
master_desc String 品牌商描述
shop_id String 品牌商对应的店铺ID
shop_type String 店铺类型:1=自营 2=pop
user_type String 用户类型:1=商家
expire_time long 有效期,时间戳,单位:秒
status int 状态:1=正常 0=冻结

响应参数

名称 类型 描述
status String 状态:1=成功 0=失败

示例

请求参数:

{
“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”,
“master_name”:”测试品牌商”,
“master_desc”:”测试品牌商”,
“shop_id”:”10000087”,
“shop_type”:”1”,
“user_type”:”1”,
“expire_time”:1577807999,
“status”:1
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“status”:”1”
}
}

更新品牌商账号【ISV提供】

说明

京东云侧修改品牌商账号信息后,需要将品牌商信息同步给ISV系统。

请求

请求地址:/JDCloud/master/edit

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
expire_time long 有效期,时间戳,单位:秒
status int 状态:1=正常 0=冻结

响应参数

名称 类型 描述
status String 状态:1=成功 0=失败

示例

请求参数:

{
“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”,
“expire_time”:1577807999,
“status”:1
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“status”:”1”
}
}

验证登录用户

说明

ISV系统使用京东云授权登录机制进行登录认证,当用户登录后,ISV系统通过此接口验证当前用户是否是合法的品牌商。

请求

请求地址:/master/verify

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_pin String 品牌商登录pin

响应参数

名称 类型 描述
valid String 结果:1=合法用户 0=非法用户
master_id String 如果是合法用户,返回对应的品牌商ID

示例

请求参数:

{
“master_pin”:”jiangkun”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“valid”:”1”,

    **“master_id”**:**”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”**  
}  

}

人群对象相关


获取标签列表

请求

请求地址:/tag/list/v2

请求方法:GET

请求参数

名称 类型 是否必填 描述

响应参数

名称 类型 描述
tag String 标签名称
instruction String 标签描述
table_cd String 标签所属表
tag_type String 标签类型
enums String 标签值,如:[“a”,”b”],没有则为[]

示例

请求参数:

响应参数:

{
“code”:”0”,
“msg”:”success”,
“data”:[
{
“tag”:”TAG_001”,
“instruction”:”用户年龄”,
“table_cd”:”001”,
“tag_type”:”1”,
“enums”:[
“15岁~25岁”,
“35岁~45岁”,
“45岁~55岁”,
“55岁以上”
]
},
{
“tag”:”TAG_101”,
“instruction”:”店铺会员”,
“table_cd”:”003”,
“tag_type”:”0”,
“enums “:[
“是”,
“否”
]
}
]
}

新建人群对象

说明

根据筛选条件生成人群人群对象(可以理解为人群对象里保存的是筛选条件),而非实际人群。拿人群对象去参与后续的人群运算和短信发送等营销活动,在人群运算和短信发送等营销活动时根据人群对象实时生成人群实例参与运算。

请求

请求地址:/crowd/create/v2

请求方法:POST

请求参数

名称 类型 是否必填 描述
data_type String 结果包类型:1=PIN 2=OPEN_ID,固定传1
condition String 筛选条件,JSON格式条件,借鉴elasticsearch查询语法
crowd_name String 人群对象名称
crowd_desc String 人群对象描述
master_id String 品牌商ID
crowd_type String 人群对象的类型:1=人群提取 2=人群计算 3=人群另存 4=人群上传,固定传1
package_type int 人群类型:1=公域人群 2=私域人群 必须和condition中的私域标签保持一致,比如查询condition是私域的,则人群类型必须也是私域的。

响应参数

名称 类型 描述
search_id String 人群对象ID

请求参数condition参数详解:

  1. 整个查询语句是一个json对象,作为字符串参数,需要转义双引号 \”。

  2. 整个语句的构造需查看标签文档。

  3. 条件查询

    1. 结构描述:

      1. 是一个json对象

        1. 只有一个key且是固定的term、terms、range、bool

        2. value为json对象

      2. 对于上面2的json对象

        1. bool查询

          1. 见下方
        2. 其他查询

          1. 只有一个key且是标签的code,

          2. value为标签的值(枚举code或者手写值)。

    2. term:等值查询

{
“term”:{
“TAG_020”:{
“value”:”TAG_020_01”
}
}
}

  1. terms:in查询

{
“terms”:{
“TAG_805”:[
“7066”,
“7069”,
“7070”,
“7068”,
“7067”,
“7071”
]
}
}

  1. range:范围查询 gte,lte,gt,lt

{
“range”:{
“TAG_552”:{
“gte”:1,
“lte”:3
}
}
}

  1. bool:布尔查询,内部key为关系词—见下方

    1. 通用规则

      1. 必须包含且只能包含must、should的一个

      2. 只有第一层的bool可以包含must_not,且必须配合should或must使用

    2. 规则2

      1. 第二层bool的key必须包含group

{
“bool”:{
“group”:”011”,
“must”:[
]
}
}

  1. 规则3

{
“bool”:{
“must”:[
]
}
}

  1. 关系词 , 值为json数组,内嵌json对象(条件查询),只能作为bool查询的key

    1. 通用规则

      1. must、should在同一bool内只能包含一个

      2. must_not必须配合should或者must使用,且只能出现在第一层bool内

    2. must

{
“bool”:{
“must”:[
]
}
}

  1. should

{
“bool”:{
“should”:[
]
}
}

  1. must_not

{
“bool”:{
“must”:[
],
“must_not”:[
]
}
}

  1. 第一层必须是一个bool查询:用来确定不同索引(相当于数据库里的表)之间的合并算法:must(交集)、should(并集)、must_not(差集)

{
“bool”:{
“must”:[
{
“bool”:{
}
},
{
“bool”:{
}
}
],
“must_not”:[
{
“bool”:{
}
},
{
“bool”:{
}
}
]
}
}

  1. 第二层(关系词对应的json数组内)必须是一个带group索引分组信息bool查询(用来判断从哪个索引找数据):

{
“bool”:{
“group”:”011”,
“must”:[
]
}
}

  1. 第三层(关系词对应的json数组内)往后没有特殊限制,可以包含所有的条件查询:

    1. 所有的标签都必须是二层的group下的标签

    2. 同一个group下不同时间窗口的标签也不能在一起(搜索词除外),如果想筛选同一个group下的不同区间的标签,需要在相应的关系词内添加一个带group的bool查询,看下面的例子

筛选对10000032222店铺的3天浏览大于 10次、加购大于1次,7天浏览大于50次、加购大于2次的人,应该这么实现(其实这种应用场景并不常见):

{
“bool”:{
“must”:[
{
“bool”:{
“group”:”011”,
“must”:[
{
“term”:{

// 店铺标签代码
“TAG_501”:{
“value”:”10000032222”
}
}
},
{
“range”:{

// 用户对店铺三日浏览量
“TAG_503”:{
“gt”:10
}
}
},
{
“range”:{

// 用户对店铺三日加购量

// 同一时间窗口可以在一个group下
“TAG_507”:{
“gt”:1
}
}
}
]
}
},
{
“bool”:{
“group”:”011”,
“must”:[
{
“term”:{

// 店铺标签代码
“TAG_501”:{
“value”:”1000003263”
}
}
},
{
“range”:{

// 用户对店铺七日浏览量
“TAG_504”:{
“gt”:50
}
}
},
{
“range”:{

// 用户对店铺七日成交量

// 同一时间窗口可以在一个group下
“TAG_515”:{
“gt”:0
}
}
}
]
}
}
]
}
}

请求参数condition示例

支持的索引:001至014共14个索引,请详查介绍

一个典型的交集查询

001索引中找:

已婚 AND (16-25岁 OR 46-55岁) AND ( 促销敏感度类型为L1-1 OR 用户大促偏好为高度敏感 ) 的用户群

011索引中找:

对店铺3天浏览大于10次的用户群

并对两个索引的结果进行交集计算

{// 第一层必须为bool查询,用来确定不同结构索引之间的合并策略
“bool”:{

// must=交集, should=并集,must_not=差集
“must”:[
{ // 第二层必须为bool查询,且需要带group信息来确定数据来源
“bool”:{
“group”:”001”,
“must”:[
{
“term”:{
“TAG_001”:{
“value”:”TAG_001_02”
}
}
},
{
“terms”:{
“TAG_021”:[
“TAG_021_02”,
“TAG_021_05”
]
}
},
{
“bool”:{
“should”:[
{
“term”:{
“TAG_025”:{
“value”:”TAG_025_01”
}
}
},
{
“term”:{
“TAG_028”:{
“value”:”TAG_028_04”
}
}
}
]
}
}
]
}
},
{
“bool”:{
“group”:”011”,
“must”:[
{
“term”:{
“TAG_501”:{
“value”:”10000032222”
}
}
},
{
“range”:{
“TAG_503”:{
“gt”:10
}
}
}
]
}
}
]
}
}

示例

请求参数:

{
“data_type”:”1”,
“crowd_name”:”测试人群对象名称”,
“crowd_desc”:”测试人群对象描述”,
“master_id”:”ac33ff50-a8fe-46db-86be-b62bdb8de7bb”,
“crowd_type”:”1”,
“package_type”:2,
“condition”:”{\”bool\”:{\”must\”:[{\”bool\”:{\”group\”:\”011\”,\”must\”:[{\”range\”:{\”TAG_513\”:{\”gte\”:1}}},{\”term\”:{\”TAG_501\”:{\”value\”:1000002847}}}]}}]}}”
}

响应参数:

{
“code”:”0”,
“msg”:”success”,
“data”:{
“search_id”:”055682112bda7b20479b962ab529a484”
}
}

编辑人群对象

请求

请求地址:/crowd/edit/v2

请求方法:POST

请求参数

名称 类型 是否必填 描述
search_id String 人群对象ID
condition String 筛选条件,JSON格式条件,继承elasticsearch查询预发
crowd_desc String 人群对象描述

响应参数

名称 类型 描述
status String 状态:0=成功 -1=失败

示例

请求参数:

{
“search_id”:”055682112bda7b20479b962ab529a484”,
“crowd_name”:”测试人群对象名称”,
“crowd_desc”:”测试人群对象描述”,
“condition”:”{“bool”:{“must”:[{“bool”:{“group”:”011”,”must”:[{“range”:{“TAG_513”:{“gte”:1}}},{“term”:{“TAG_501”:{“value”:1000002847}}}]}}]}}”
}

响应参数:

{
“code”:”0”,
“msg”:”success”,
“data”:{
“status”:”0”
}
}

删除人群对象

请求

请求地址:/crowd/del

请求方法:POST

请求参数

名称 类型 是否必填 描述
search_id String 人群对象ID

响应参数

名称 类型 描述
status String 状态:0=成功 -1=失败

示例

请求参数:

{
“search_id”:”055682112bda7b20479b962ab529a484”
}

响应参数:

{
“code”:”0”,
“msg”:”success”,
“data”:{
“status”:”0”
}
}

获取人群对象详情

请求

请求地址:/crowd/info

请求方法:POST

请求参数

名称 类型 是否必填 描述
search_id String 人群对象ID

响应参数

名称 类型 描述
search_id String 人群对象ID
data_type String 结果包类型
crowd_type int 人群对象类型,具体参考附录1
condition String 筛选条件
crowd_name String 人群对象名称
crowd_desc String 人群对象描述
master_id String 品牌商ID
package_type int 人群类型:1=公域 2=私域

示例

请求参数:

{
“search_id”:”d5f06320f8253e7b95f3aa5726882f85”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“condition”:”{“bool”:{“must”:[{“bool”:{“group”:”003”,”must”:[{“bool”:{“must”:[{“range”:{“TAG_321”:{“gte”:1}}},{“terms”:{“TAG_310”:[“100000652875”,”100000652897”]}}]}},{“term”:{“TAG_309”:{“value”:1000003263}}}]}}]}}”,
“search_id”:”d5f06320f8253e7b95f3aa5726882f85”,
“data_type”:”1”,
“crowd_type”:1,
“crowd_name”:”测试人群对象名称”,
“crowd_desc”:”测试人群对象描述”,
“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”,
“package_type”:1
}
}

获取人群对象列表

说明

分页查询

请求

请求地址:/crowd/list

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
crowd_name String 人群对象名称,支持模糊搜索
crowd_type int 人群对象类型,仅支持1/3/4,具体值参考附录
page_num int 当前页,默认值1
page_size int 每页条数,默认值10
package_type int 人群类型:1=公域人群,2=私域人群

响应参数

名称 类型 描述
page_num int 当前页
page_size int 每页条数
order_by String 排序条件
total long 总记录条数
pages int 总页数
result List\ 人群对象记录

Object

名称 类型 描述
search_id String 人群对象ID
date_type String 结果包类型
crowd_type int 人群对象类型
condition String 筛选条件
crowd_name String 人群对象名称
crowd_desc String 人群对象描述
master_id String 品牌商ID
create_time String 创建时间
package_type int 人群类型:1=公域 2=私域

示例

请求参数:

{
“master_id”:”ac33ff50-a8fe-46db-86be-b62bdb8de7b6”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“total”:791,
“pages”:80,
“page_num”:1,
“page_size”:10,
“order_by”:null,
“result”:[
{
“condition”:”{“bool”:{“must”:[{“bool”:{“must”:[{“term”:{“TAG_310”:{“value”:”eqwew”}}},{“bool”:{“should”:[{“term”:{“TAG_316”:{“value”:10}}},{“term”:{“TAG_316”:{“value”:0}}}]}}],”group”:”003”}}]}}”,
“search_id”:”30ec48323819424808463615aeffdfc1”,
“data_type”:”1”,
“crowd_type”:1,
“crowd_name”:null,
“crowd_desc”:”sku06”,
“master_id”:”ac33ff50-a8fe-46db-86be-b62bdb8de7b6”,
“create_time”:”2019-07-12 21:19:25”,
“package_type”:1
}
]
}
}

人群对象实例化

请求

请求地址:/crowd/init

请求方法:POST

请求参数

名称 类型 是否必填 描述
search_id String 人群对象ID

响应参数

名称 类型 描述
search_id String 人群对象ID
package_id String 人群对象实例ID

示例

请求参数:

{
“search_id”:”d5f06320f8253e7b95f3aa5726882f85”
}

响应参数:

{
“code”:”0”,
“msg”:”success”,
“data”:{
“search_id”:”d5f06320f8253e7b95f3aa5726882f85”,
“package_id”:”8197a201-cff3-4251-99bc-0c0f67205316”
}
}

人群对象实例相关


获取人群对象实例详情

说明

该接口计划将传参方式从path_variable改成query_string

请求

请求地址:/crowd/instance/status/{package_id}

请求方法:GET

请求参数

名称 类型 是否必填 描述
package_id String 人群对象实例ID

响应参数

名称 类型 描述
status String 人群对象实例状态:0=生成中 1=生成失败 2=生成成功
package_size String 包大小,人群包中人群的数量【精确值】,生成中、生成失败,为0
package_size_view String 包大小模糊值,生成中、生成失败,为0
package_type int 人群类型:1=公域人群 2=私域人群

示例

请求:

GET /crowd/instance/status/b8dac175-630b-4cf0-9b2f-d83bafb3f1a5

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“status”:”2”,
“package_size”:”44647”,
“package_size_view”:”44647”,
“package_type”:1
}
}

人群对象实例另存为

说明

根据人群对象实例id,复制原人群对象和人群对象实例,生成新的人群对象和人群对象实例。

请求

请求地址:/crowd/instance/saveas

请求方法:POST

请求参数

名称 类型 是否必填 描述
package_id String 人群对象实例ID
crowd_name String 人群对象名称
crowd_desc String 人群对象描述
master_id String 品牌商ID

响应参数

名称 类型 描述
search_id String 人群对象ID

示例

请求参数:

{
“package_id”:”8197a201-cff3-4251-99bc-0c0f67205316”,
“crowd_name”:”测试人群对象名称”,
“crowd_desc”:”测试人群对象描述”,
“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”
}

响应参数:

{
“code”:”0”,
“msg”:”success”,
“data”:{
“search_id”:”23c9207cbed53771463565a5bf45f791”
}
}

人群计算

说明

该接口为自动化营销平台核心接口,可对对实例化生成的多个包进行计算,根据业务,可实现三种方式的计算:

  1. 求并集(多个人群包合并到一起)

  2. 求交集(多个人群包中重复的人)

  3. 求差集(多个人群包中不重复的人)

请求

请求地址:/crowd/instance/calc

请求方法:POST

请求参数

名称 类型 是否必填 描述
data_type String 结果包类型,固定传1
condition String 筛选条件,JSON格式条件串,集成elasticsearch查询语法,参数必须是人群对象实例ID。
crowd_name String 人群对象名称
crowd_desc String 人群对象描述
master_id String 品牌商ID

响应参数

名称 类型 描述
search_id String 人群对象ID
package_id String 人群对象实例ID
package_status String 人群对象实例化状态:0=正在计算 1=生成失败 2=生成成功

请求参数condition示例

  1. must交集(A and B)

{
“bool”:{
“must”:[
{
“term”:{
“package_id”:{
“value”:”94e462df-e0d2-4ea0-896b-baca7fbd8276”
}
}
},
{
“term”:{
“package_id”:{
“value”:”ba7836e1-feb1-438f-adfe-5b0c5507a2a4”
}
}
}
]
}
}

  1. should并集(A or B or C)

{
“bool”:{
“should”:[
{
“term”:{
“package_id”:{
“value”:”e3e1663c-cfb6-4875-8a98-cb10ca05f2e7”
}
}
},
{
“term”:{
“package_id”:{
“value”:”a1ecbdc6-1e48-4bbd-b139-d3210a47a6d7”
}
}
},
{
“term”:{
“package_id”:{
“value”:”4cb7bdc0-d77d-4676-a4e2-a9f594ce94c6”
}
}
}
]
}
}

  1. must_not差集((A or B) not in (a and b))

{
“bool”:{
“should”:[
{
“term”:{
“package_id”:{
“value”:”7dec9b67-6189-4992-a075-c40919de6faf”
}
}
}
],
“must_not”:[
{
“term”:{
“package_id”:{
“value”:”42779b68-8498-470d-85d0-467f40eeff6a”
}
}
}
]
}
}

示例

请求参数:

{
“data_type”:”1”,
“crowd_name”:”测试人群运算名称”,
“crowd_desc”:”测试人群运算名称”,
“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”,
“condition”:”{“bool”:{“should”:[{“term”:{“package_id”:{“value”:”e3e1663c-cfb6-4875-8a98-cb10ca05f2e7”}}},{“term”:{“package_id”:{“value”:”8197a201-cff3-4251-99bc-0c0f67205316”}}},{“term”:{“package_id”:{“value”:”4cb7bdc0-d77d-4676-a4e2-a9f594ce94c6”}}}]}}”
}

响应参数:

{
“code”:”0”,
“msg”:”success”,
“data”:{
“search_id”:”24206fba85a1e09b29a24370f29957ce”,
“package_id”:”5c9ec30f-4507-4bd1-a15a-2e89828c5e74”,
“package_status”:”0”
}
}

人群抽取

说明

指定比例或者具体的数量,将一个人群对象实例拆分成多个人群对象和人群对象实例。按比例抽取,比例之和不能超过1。按数量抽取,数量之和不能超过人群对象实例中人的总数。

请求

请求地址:/crowd/instance/split

请求方法:POST

请求参数

名称 类型 是否必填 描述
package_id String 人群对象实例ID
ratio List\ 抽取比例,如:[自定义名1\ 0.4,自定义名2\ 0.6] 或:[自定义名1\ 1000,自定义名2\ 2000]
type String 抽取类型:0=百分比 1=人数

响应参数

名称 类型 描述
package_id String 人群对象实例ID
package_size String 人群对象实例的人数(包大小)
package_name String 人群对象实例名称,抽取比例的名称,比如“自定义名1\ 0.4”

示例

请求参数:

{
“package_id”:”b8dac175-630b-4cf0-9b2f-d83bafb3f1a5”,
“ratio”:[
“测试抽取1|0.1”,
“测试抽取2|0.1”
],
“type”:”0”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:[
{
“package_size”:”4464”,
“package_name”:”测试抽取1|0.1”,
“package_id”:”111a85b1-e732-4997-8127-bdfe446ad68d”
},
{
“package_size”:”4464”,
“package_name”:”测试抽取2|0.1”,
“package_id”:”272ba9b6-9031-4016-956a-80a0b315235a”
}
]
}

响应节点筛选

说明

适用于通过线上方式进行短信触达或者优惠券触达的包,根据筛选类型(可传多个类型),查询出符合筛选类型的人群,生成新的人群对象和人群对象实例。

请求

请求地址:/crowd/instance/filter

请求方法:POST

请求参数

名称 类型 是否必填 描述
package_id String 人群对象实例ID
filter_types List\ 筛选类型:1=受限制 2=未知状态 3=发送失败 4=发送成功

响应参数

名称 类型 描述
package_id String 人群对象实例ID
filter_type String 筛选类型

示例

请求参数:

{
“package_id”:”b8dac175-630b-4cf0-9b2f-d83bafb3f1a5”,
“filter_type”:[
“1”,
“2”
]
}

响应参数:

{
“code”:”0”,
“msg”:” success “,
“data”:[
{
“package_id”:”810ce39a-8131-48de-9bd8-deda61e38dc3”,
“filter_type”:”2”
},
{
“package_id”:”810ce39a-8131-48de-9bd8-deda61e38dc2”,
“filter_type”:”1”
}
]
}

触发人群营销

说明

支持公、私域短信触达、公、私域优惠券触达。

请求

请求地址:/crowd/instance/reach

请求方法:POST

请求参数

名称 类型 是否必填 描述
package_id String 人群对象实例ID
type String 触达类型
params Object 参数集合

Object【type=SMSPUBLIC 公域短信】

名称 类型 是否必填 描述
template_id String 短信模板ID
template_params String 短信模板参数,JSON String
send_time Date 发送时间,格式:yyyy-MM-dd HH:mm:ss

Object【type=SMSPRIVATE 私域短信】

名称 类型 是否必填 描述
template_id String 短信模板ID
template_params String 短信模板参数,JSON String
signature_id String 签名ID
send_time Date 发送时间,格式:yyyy-MM-dd HH:mm:ss

Object【type=COUPONPUBLIC 公域优惠券】

名称 类型 是否必填 描述
template_id String 短信模板ID
template_params String 短信模板参数,JSON String
batch_id String 优惠券ID
send_time Date 发送时间,格式:yyyy-MM-dd HH:mm:ss

Object【type=COUPONPRIVATE 私域优惠券】

名称 类型 是否必填 描述
template_id String 短信模板ID
template_params String 短信模板参数,JSON String
signature_id String 签名ID
batch_id String 优惠券ID
send_time Date 发送时间,格式:yyyy-MM-dd HH:mm:ss

响应参数

名称 类型 描述
status String 状态:0=成功 其它=失败

示例

请求参数:

{
“package_id”:”07fecfbb-5c47-4d47-ab1d-3a2f197b8738”,
“type”:”SMSPRIVATE”,
“params”:{
“template_id”:”4365”,
“template_params”:”{“nick”:”kocor”,”time”:”2019”,”url”:”http://jd.com”}”,
“signature_id”:”1111”,
“batch_id”:”2222”
}
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“status”:”0”
}
}

短信相关


长链接转换成短链接

说明

短信触达中,如果包含URL,为了节省短信数量,可以将长链转换为短链。

短链系统要求,如果域名后面直接加请求参数,需要在”?”之前加上”/”,比如:

https://www.jd.com/?a.txt

https://www.jd.com/index.html?a.txt

请求

请求地址:/shorturl/create

请求方法:POST

请求参数

名称 类型 是否必填 描述
url String 长链地址,querystring中必须包含utm_source和utm_campaign,埋点信息作为统计转换的依据。并且utm_campaign必须包含2个下划线。 utm_souce=这个由ISV侧和京东云侧协商制定 utm_campaign=包ID店铺ID_SKU

响应参数

名称 类型 描述
short_url String 生成的短链url

示例

请求参数:

{
“url”:https://mall.jd.com/index-1000003263.html?utm_source=ecrm&utm_campaign=2e308d809fbcbbf5c5d32fb9a0402504_1000003263_
}

响应参数:

{
“result”:”0”,
“msg”:” success “,
“data”:{
“short_url”:”3.cn/HaZCkiz”
}
}

获取短信模板列表

说明

获取品牌商的公域和私域的模板列表。

请求

请求地址:/sms/templates

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
type int 类型:1=公域 2=私域

响应参数

名称 类型 描述
template_id String 模板ID
template_name String 模板名称
template_content String 模板内容,包含占位符
template_params String 模板内容占位符key名称,所有用户收到的短信内容都是一样的。

示例

请求参数:

{
“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”,
“type”:1
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:[
{
“template_id”:”4366”,
“template_name”:”戴森活动模板01”,
“template_content”:”亲爱的{nick},现诚邀您参加新品发布{time},请点击{url}参加此活动,回复TDQR退订”,
“template_params”:”[“nick”,”time”,”url”]”
},
{
“template_id”:”4367”,
“template_name”:”戴森活动模板02”,
“template_content”:”亲爱的{nick},现诚邀您参加新品发布{time},请点击{url}参加此活动,回复TDQR退订”,
“template_params”:”[“nick”,”time”,”url”]”
},
{
“template_id”:”2121”,
“template_name”:”gaowp模版”,
“template_content”:”gaowp::”,
“template_params”:”[]”
}
]
}

获取短信签名列表

说明

获取品牌商的私域的签名列表。目前,公域签名只有一个“【京东】”,私域的人群包进行触达时,不需要传签名id。因此该接口只能获取私域签名列表。

请求

请求地址:/sms/signature

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
type int 类型:1=公域 2=私域,固定传2

响应参数

名称 类型 描述
signature_id String 签名ID
signature_name String 签名名称
type String 类型:1=公域 2=私域

示例

请求参数:

GET /sms/signature?master_id=63d1f0a3-0b2b-4da3-a35f-007ae0672a10&type=2

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:[
{
“type”:2,
“signature_id”:”1c5466bb7e685bb2edb5d5854d6e5953”,
“signature_name”:”【测试签名】”
},
{
“type”:2,
“signature_id”:”13e”,
“signature_name”:”【戴森测试】”
}
]
}

获取品牌商短信余额

请求

请求地址:/sms/balance

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID

响应参数

名称 类型 描述
public_balance long 公域短信余额
private_balance long 私域短信余额

示例

请求参数:

GET /sms/balance?master_id=63d1f0a3-0b2b-4da3-a35f-007ae0672a10

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“public_balance”:65282,
“private_balance”:97097
}
}

获取品牌商短信充值记录列表

说明

分页查询

请求

请求地址:/sms/recharge

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
start_date Date 开始时间,格式:yyyy-MM-dd HH:mm:ss
end_date Date 结束时间,格式:yyyy-MM-dd HH:mm:ss
page_num int 页数,默认1
page_size int 每页条数,默认10

响应参数

名称 类型 描述
page_num int 当前页数
page_size int 每页条数
order_by String 排序
total long 总记录条数
pages int 总页数
result List\ 充值记录列表

Object

名称 类型 描述
order_id String 订单编号
number long 充值数量
type int 类型:1=公域 2=私域
status int 状态:1=成功
create_time Date 充值时间

示例

请求参数:

GET /sms/recharge?master_id=63d1f0a3-0b2b-4da3-a35f-007ae0672a10

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“total”:3,
“pages”:1,
“page_num”:1,
“page_size”:10,
“order_by”:null,
“result”:[
{
“number”:1000,
“type”:2,
“status”:1,
“order_id”:”1c5466bb7e685bb2edb5d5854d6e5953”,
“create_time”:”2019-05-16 16:34:26”
},
{
“number”:2,
“type”:1,
“status”:1,
“order_id”:”12312312”,
“create_time”:”2019-05-22 19:58:55”
}
]
}
}

获取品牌商短信消费记录列表

说明

分页查询

请求

请求地址:/sms/consume

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
start_date Date 开始时间,格式:yyyy-MM-dd HH:mm:ss
end_date Date 结束时间,格式:yyyy-MM-dd HH:mm:ss
page_num int 页数,默认1
page_size int 每页条数,默认10

响应参数

名称 类型 描述
page_num int 当前页数
page_size int 每页条数
order_by String 排序
total long 总记录条数
pages int 总页数
result List\ 消费记录列表

Object

名称 类型 描述
consume_id String 消费编号
number long 消费数量
type int 类型:1=公域 2=私域
direction int 方向:1=消费 2=退还
create_time Date 充值时间

示例

请求参数:

GET /sms/consume?master_id=63d1f0a3-0b2b-4da3-a35f-007ae0672a10&type=2

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“total”:2,
“pages”:1,
“page_num”:1,
“page_size”:10,
“order_by”:null,
“result”:[
{
“number”:50,
“type”:1,
“direction”:1,
“consume_id”:”1c5466bb7e685bb2edb5d5854d6e5953”,
“create_time”:”2019-05-17 16:05:17”
},
{
“number”:8,
“type”:2,
“direction”:1,
“consume_id”:”5a1777175642ae3bc73e9a1cec14d784”,
“create_time”:”2019-05-30 21:52:06”
}
]
}
}

统计人群包短信发送结果

说明

目前仅能统计通过线上渠道方式发送的短信的结果

请求

请求地址:/sms/result

请求方法:POST

请求参数

名称 类型 是否必填 描述
package_id String 包ID

响应参数

名称 类型 描述
success int 发送成功的数量
failed int 发送失败的数量
restrict in 受限制的数量
unknown int 未知状态的数量

示例

请求参数:

{
“package_id”:”b8dac175-630b-4cf0-9b2f-d83bafb3f1a5”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“success”:100,
“failed”:10,
“restrict”:10,
“unknown”:10

}
}

活动相关


提交待审核活动

请求

请求地址:/activity/create

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
activity_id String 活动ID
activity_name String 活动名称
activity_desc String 活动描述
preview_url String 免登后,真正的活动预览地址
start_type String 启动方式:1=单次执行 2=周期性执行
start_type_remark String 启动方式备注,启动方式为周期性执行时有值。 例: 周期:每1周执行一次;开始时间:2019-04-22 20:20:00;结束:执行5次结束。
activity_reach_type String 活动触达方式: SMS=短信(包括人群触达方式中的短信和优惠券) OTHER=其它方式

响应参数

名称 类型 描述
status String 状态:0=成功 非0=失败

示例

请求参数:

{
“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”,
“activity_id”:”11111”,
“activity_name”:”测试活动名称”,
“activity_desc”:”测试活动描述”,
“preview_url”:http://localhost:8080/preview_url,
“start_type”:2,
“start_type_remark “:”周期:每1周执行一次;开始时间:2019-04-22 20:20:00;结束:执行5次结束。”,

“activity_reach_type “:”SMS”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“status”:”0”
}
}

通知ISV活动审核结果【ISV提供】

请求

请求地址:/JDCloud/activity/update

请求方法:POST

请求参数

名称 类型 是否必填 描述
activity_id String 活动ID
approve_status String 活动审核状态:1=通过 2=驳回
audit_remark String 活动描述
auditor String 审核人
master_id String 品牌商ID

响应参数

名称 类型 描述
status String 状态:1=成功 0=失败

示例

请求参数:

{
“activity_id”:”11111”,
“approve_status”:”1”,
“audit_remark”:”审核通过”,
“auditor”:”jiangkun17”,

“master_id”:”63d1f0a3-0b2b-4da3-a35f-007ae0672a10”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“status”:”1”
}
}

免登跳转活动详情【ISV提供】

请求

请求地址:/JDCloud/master/verify

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
preview_url String 活动详情地址

响应参数

无,成功后直接跳转响应活动详情地址

报表相关


创建人群营销报表

说明

适用于两种人群包:

  1. 营销报表适用于通过短信、优惠券触达的人群包。

  2. 非触达的人群包

对于触达的人群包,无需ISV创建,我们程序定时任务将自动创建。

对于非触达的包,需要ISV调用该接口进行创建。

请求

请求地址:/report/create

请求方法:POST

请求参数

名称 类型 是否必填 描述
package_id String 人群对象实例ID
master_id String 品牌商ID
partner_id String 合作伙伴ID【由京东云侧提供】
report_date Date 统计报表开始时间,格式:yyyy-MM-dd HH:mm:ss

响应参数

名称 类型 描述
status String 状态:0=成功 非0=失败

示例

请求参数:

{
“package_id”:”810ce39a-8131-48de-9bd8-deda61e38dc1”,
“master_id”:”222222”,
“partner_id”:”zhike”,
“report_date”:”2019-06-19 00:00:00”
}

响应参数:

{
“code”:0,
“msg”:”success”,
“data”:{
“status”:”0”
}
}

获取人群营销报表

说明

全量返回指定日期的所有营销报表(短信触达、优惠券触达),每天中午12点开始可以同步前一天的报表。

请求

请求地址:/report

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
partner_id String 合作伙伴ID【由京东云侧提供】
report_date Date 报表日期,格式:yyyy-MM-dd
report_type String 报表类型:click=点击 exposure=曝光 all=所有,默认为exposure

响应参数

名称 类型 描述
partner_id String 合作伙伴ID
report_date Date 报表日期,格式:yyyy-MM-dd
report_data List\ 报表数据

Object

名称 类型 描述
package_id String 包id
shop_id Integer 店铺id
reach_type String 触达类型: NULL=未触达 SMSPUBLIC=公域短信触达 SMSPRIVATE=私域短信触达 COUPONPUBLIC=公域优惠券触达 COUPONPRIVATE=私域优惠券触达
pv Integer 落地页的次数(每日增量) 如果report_type是click 请忽略此指标
uv Integer 落地页的人数(每日增量) 如果report_type是click 请忽略此指标
cart_num Integer 加购人数(每日增量)
sku_pv_num Integer 商品详情页PV(每日增量)
sku_uv_num Integer 商品详情页UV(每日增量)
shop_pv_num Integer 店铺首页PV(每日增量)
shop_uv_num Integer 店铺首页UV(每日增量)
follow_sku_num Integer 关注商品人数(每日增量)
follow_shop_num Integer 关注店铺人数(每日增量)
ord_pins Integer 下单人数(每日增量)
ord_amount Double 下单金额(每日增量)
ord_num Integer 下单订单数(每日增量)
ord_qtty Integer 下单件数(每日增量)
pay_pins Integer 付款人数(每日增量)
pay_amount Double 付款金额(每日增量)
pay_num Integer 付款订单数(每日增量)
pay_qtty Integer 付款件数(每日增量)
people_sent_num Integer 选包总量(活动全量)
delivered_num Integer 触达人数(包括优惠券和短信,活动全量)
coupon_pins Integer 领券人数(每日增量)
coupon_use_pins Integer 用券人数(每日增量)
coupon_orders Integer 优惠券引入订单量(每日增量)
coupon_amount Double 优惠券引入金额
browse_sku_top5 String 浏览件数top5 格式:排名skuId件数*排名skuId件数*……
cart_add_top5 String 加购件数top5 格式:排名skuId件数*排名skuId件数*……
follow_product_top5 String 关注件数top5 格式:排名skuId件数*排名skuId件数*……
ord_qtty_top5 String 下单件数top5 格式:排名skuId件数*排名skuId件数*……
ord_amount_top5 String 下单金额top5 格式:排名skuId金额*排名skuId金额*……
pay_qtty_top5 String 付款件数top5 格式:排名skuId件数*排名skuId件数*……
pay_amount_top5 String 付款金额top5 格式:排名skuId金额*排名skuId金额*
op_time String 营销监控时间(当前统计时间,天)
report_type String 报表类型:click=点击 exposure=曝光

示例

请求参数:

{
"report_date":"2019-03-10",
"master_id":"111111111111111111",
"partner_id":"zhike"
}

响应参数:

{
"code":0,
"msg":" success ",
"data":{
"partner_id":"zhike",
"shop_id":"1000097",
"report_date":"2019-03-10",
"report_data":[
{
"pv":1,
"uv":1,
"package_id":"package_id",
"shop_id":"1000003263",
"reach_type":"SMSPRIVATE",
"cart_num":1,
"sku_pv_num":1,
"sku_uv_num":1,
"shop_pv_num":1,
"shop_uv_num":1,
"follow_sku_num":1,
"follow_shop_num":1,
"ord_pins":1,
"ord_amount":2,
"ord_num":1,
"ord_qtty":1,
"pay_pins":1,
"pay_amount":1,
"pay_num":1,
"pay_qtty":1,
"people_sent_num":1,
"delivered_num":1,
"coupon_pins":1,
"coupon_use_pins":1,
"coupon_orders":1,
"coupon_amount":1,

"browse_sku_top5":"1_100003730605_918*2_100004121021_26*3_100006275844_22*4_100006275852_21*5_3368118_12"

"cart_add_top5":"1_100003730605_522*2_100006275852_67*3_100006275844_52*4_100004121021_29*5_100003730609_25"

"follow_product_top5":"1_100003730605_34*2_100006275844_2*3_100003730609_2*4_100002189622_2*5_4070763_1"

"ord_qtty_top5":"1_4070763_145*2_4838712_84*4_100003730605_54*5_100006275852_24*3_100003498910_81"

"ord_amount_top5":"1_4070763_419854.2*2_4838712_204361.6*3_100003730605_163860.0*4_100004325504_102530.0*5_100006275852_71760.0"

"pay_qtty_top5":"1_4070763_114*2_4838712_63*4_100003730605_33*5_100006275852_13*3_100003498910_47"

"pay_amount_top5":"1_4070763_324963.2*2_4838712_149071.6*3_100003730605_100170.0*4_100004325504_59700.0*5_100006275852_38870.0"

"op_time":"2019-03-20",

             **"report_type"**:**"click"**  
        }  
    ]  
}  

}

重新拉取指定日期的营销报表

说明

如果某天报表数据有误,可以重新拉取。

请求

请求地址:/report/pull

请求方法:POST

请求参数

名称 类型 是否必填 描述
partner_id String 合作伙伴ID【由京东云侧提供】
report_date Date 报表日期,格式:yyyy-MM-dd

响应参数

名称 类型 描述
status String 状态:0=成功 非0=失败

示例

请求参数:

{
"report_date":"2019-04-28",
"partner_id":"zhike"
}

响应参数:

{
"code":0,
"msg":"success",
"data":{
"status":"0"
}
}

微信活动


获取公众号模板消息列表

说明

通过品牌商id获取公众号模板消息列表,无分页

请求

请求地址:/activity/wx/getAllTemplate

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID

响应参数

List\

名称 类型 描述
templateId String 模板ID
title String 模板标题
primaryIndustry String 模板所属行业的一级行业
deputyIndustry String 模板所属行业的二级行业
content String 模板内容
example String 模板示例

示例

请求参数:

GET /activity/wx/getAllTemplate?master_id=111111111111111111

响应参数:

{
"code":0,
"msg":"success",
"data":[
{
"templateId":"6WZmKqoFhS8894SYGQltQzOhNKehdMd6O5R5BRSwi1g",
"title":"订阅模板消息",
"primaryIndustry":"",
"deputyIndustry":"",
"content":"",
"example":""
},
{
"templateId":"iHxQJL1oep3kb2EVX94-T4zQeVVihfdNGXapx4tS0oU",
"title":"活动参与成功通知",
"primaryIndustry":"IT科技",
"deputyIndustry":"互联网|电子商务",
"content":" 活动名: 活动时间: ",
"example":"恭喜您成功报名活动! 活动名:七夕情人节 活动时间:2017年8月28日 感谢您的参与!"
}
]
}

获取公众号图文列表

说明

通过品牌商id获取公众号图文消息列表,有分页

请求

请求地址:/activity/wx/batchGetNews

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
offset int 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回,默认0
count int 返回素材的数量,取值在1到20之间,默认20

响应参数

totalCount int 该类型的素材的总数
itemCount int 本次调用获取的素材的数量
items List\

WxMpMaterialNewsItemVO

名称 类型 描述
mediaId String 素材ID
updateTime Date 这篇图文消息素材的最后更新时间
content WxMpMaterialNewsVO

WxMpMaterialNewsVO

名称 类型 描述
createdTime Date 图文创建时间
updatedTime Date 图文更新时间
articles List\

WxMpMaterialNewsArticleVO

名称 类型 描述
thumbMediaId String 图文消息的封面图片素材id(必须是永久mediaID)
thumbUrl String 图文消息的封面url
author String 图文消息的作者
title String 图文消息的标题
contentSourceUrl String 在图文消息页面点击“阅读原文”后的页面链接
content String (必填) 图文消息页面的内容,支持HTML标签
digest String 图文消息的描述
showCoverPic boolean 是否显示封面,true为显示,false为不显示
url String 点击图文消息跳转链接
needOpenComment boolean 是否打开评论,0不打开,1打开
onlyFansCanComment boolean 否粉丝才可评论,0所有人可评论,1粉丝才可评论

示例

请求参数:

GET /activity/wx/getAllTemplate?master_id=111111111111111111& page_num=1& page_size=10

响应参数:

{
"code":0,
"msg":"success",
"data":{
"totalCount":1,
"itemCount":1,
"items":[
{
"mediaId":"vo5a1f0PLcgSZoTDJ0dkWK6SLVy6f8FLN6406bBuRtQ",
"updateTime":"2019-07-09 18:03:01",
"content":{
"createdTime":"2019-07-08 16:47:16",
"updatedTime":"2019-07-09 18:03:01",
"articles":[
{
"thumbMediaId":"vo5a1f0PLcgSZoTDJ0dkWJiXRCAkC2mK4JFToGFGFoI",
"thumbUrl":"http://mmbiz.qpic.cn/mmbiz_jpg/qg42M9IOnGMCLtO3mmKd8ibhCv3FCJ3W8k4OLnrHpqXEJqHRj4XyqiaiarTRkW9ZbIUTeY1RmwRq8oZ5syDxtcRpg/0?wx_fmt=jpeg",
"author":"jzone",
"title":"京东云测试",
"contentSourceUrl":"",
"content":"\1111111111\
\</p>"
,
"digest":"1111111111",
"showCoverPic":false,
"url":"http://mp.weixin.qq.com/s?__biz=MzI3Nzg4MzEyNg==&mid=100000100&idx=1&sn=14d3068f63bc96db423be8fb4c2599eb&chksm=6b5e30fd5c29b9ebf32113f3b3df15915c71d5bfdc3b4a62cdcb44b05dbfbbfa4606171666b8#rd",
"needOpenComment":false,
"onlyFansCanComment":false
}
]
}
}
]
}
}

创建微信活动

说明

通过品牌商id创建微信活动,发送模板消息或者图文消息。

请求

请求地址:/activity/wx/create

请求方法:POST

Content-Type:application/json

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
business_id String 业务ID(活动ID)例如: d5b8130ede7148d294b63518973834c8
send_time Date 活动投放时间yyyy-MM-dd HH:mm:ss
create_time Date 创建活动时间yyyy-MM-dd HH:mm:ss
begin_time Date 活动开始时间yyyy-MM-dd HH:mm:ss
end_time Date 活动结束时间yyyy-MM-dd HH:mm:ss
pack_type Int 人群包类型 1,2,5
* FOLLOWER_ALL(1, "全部人群"),
* CUSTOMER(2, "自定义人群包"),
* UPLOAD_OPENID(3, "导入openId包"),
* FOLLOWER_PIN(4, "匹配人群"),
* FOLLOWER_NULL(5, "未匹配人群");
package_id String 人群包id
pack_desc String 人群包描述[非必须]
pack_name String 人群包名称[非必须]
activity_type Int 活动类型[必须] * TEMPLATE(3, "模版消息"), * MEDIA(4, "图文消息");
mediaInfo Object 图文信息[非必须]
templateInfo Object 模板信息[非必须]
urlMappingList List\< ActivityUrlMapping > 原始链接与短链映射列表[非必须]

MediaInfo 图文消息

名称 类型 是否必填 描述
mediaId String 图文素材ID(必传)
mediaTitle String 素材标题(必传)

TemplateInfo 模板消息

名称 类型 是否必填 描述
templateId String 模版ID(必传)
data List\ 模版消息体(必传)
url String 模版消息跳转链接(非必传)
miniAppId String 模版消息跳转小程序配置信息(非必传)
miniPathPage String 模版消息跳转小程序配置信息(非必传)

TemplateDataInfo

名称 类型 是否必填 描述
name String 模版key[必传]
value String key对应的值[必传]
color String 字体颜色[非必传] #173177

ActivityUrlMapping

名称 类型 是否必填 描述
url String 原始链接,例如:https://www.jd.com/
shortUrl String 原始链接转化后的短链,例如:3.cn/aBu9yoA

响应参数

名称 类型 描述
activityId Long 微信活动ID

示例

请求参数:

{
"business_id":"3243d1ff24c6471783f91081b2ee249b",
"send_time":"2019-7-18 17:13:00",
"create_time":"2019-7-18 17:13:00",
"begin_time":"2019-7-18 17:13:00",
"end_time":"2019-7-19 17:13:00",
"pack_type":5,
"pack_path":"http://ecrm-zhike-dev.oss.cn-north-1.jcloudcs.com/2019/07/09/d5a9c35e-8d57-4f14-8f56-2bca1c818e8d?Expires=1578191019&AccessKey=2CF656569DA70F6D438D316EE2BBB494&Signature=qI9vOUSnMNL2HvcvQxUBNngsNk0%3D",
"pack_desc":"ECRM测试包描述",
"pack_ame":"ECRM测试包名称",
"activity_type":3,
"mediaInfo":{
"mediaId":"vo5a1f0PLcgSZoTDJ0dkWK6SLVy6f8FLN6406bBuRtQ",
"mediaTitle":"京东云ECRM上线了"
},
"templateInfo":{
"templateId":"iHxQJL1oep3kb2EVX94-T4zQeVVihfdNGXapx4tS0oU",
"data":[
{
"name":"first",
"value":"京东云ECRM通知",
"color":"#173177"
},
{
"name":"keyword1",
"value":"京东云促销",
"color":"#173177"
},
{
"name":"keyword2",
"value":"2019年7月9日",
"color":"#173177"
},
{
"name":"remark",
"value":"诚邀您参与",
"color":"#173177"
}
],
"url":"http://www.jd.com",
"miniAppId":null,
"miniPathPage":null
}
}

响应参数:

{
"code":0,
"data":2783,
"success":true
}

查询活动详情

说明

通过品牌商id和微信活动ID获取微信活动详情

请求

请求地址:/activity/wx/activityInfo

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
activity_id Long 微信活动ID(创建微信活动返回的ID)

响应参数

名称 类型 描述
activity_id Long 活动ID
activity_content 活动内容
business_id String 对应创建活动时传入的业务ID
activity_type String 活动类型[必须] * TEMPLATE(3, "模版消息"), * MEDIA(4, "图文消息");
mediaInfo Object 同创建活动参数
templateInfo Object 同创建活动参数
pack_type Integer 人群包类型 125
* FOLLOWER_ALL(1, "全部人群"),
* CUSTOMER(2, "自定义人群包"),
* UPLOAD_OPENID(3, "导入openId包"),
* FOLLOWER_PIN(4, "匹配人群"),
* FOLLOWER_NULL(5, "未匹配人群");
pack_path String 人群包地址
pack_desc String 人群包描述
pack_name String 人群包名字
pre_num Long 预计发送人数
act_num Long 实际发送人数
begin_time Date 活动开始时间
end_time Date 活动结束时间
send_time Date 活动触达时间
activity_status Integer 活动状态 CREATE(0, "正在获取映射关系"), LAUNCHED(1, "已投放"), LAUNCH_NEED(2, "待投放"), LAUNCH_REJECTED(3, "已驳回"), LAUNCH_NEED_ARRIVE(4, "待触达"), LAUNCH_ARRIVING(5, "触达中"), SEND_FAIL(6, "发送失败");
remark String 活动取消备注
created Date 活动创建时间

示例

请求参数:

GET /activity/wx/activityInfo?master_id=111111111111111111& activity_id=2786

响应参数:

{
"code":0,
"msg":"success",
"data":{
"mediaInfo":null,
"templateInfo":{
"templateId":"iHxQJL1oep3kb2EVX94-T4zQeVVihfdNGXapx4tS0oU",
"data":[
{
"name":"keyword1",
"value":"京东云促销",
"color":null
},
{
"name":"keyword2",
"value":"2019年7月9日",
"color":null
},
{
"name":"remark",
"value":"诚邀您参与",
"color":null
},
{
"name":"first",
"value":"京东云ECRM通知",
"color":null
}
],
"url":"https://plogin.m.jd.com/user/login.action?appid=795&returnurl=https%3A%2F%2Fthunder.jd.com%2Fjzone-h5%2Fblank%2Findex.html%3FtoPage%3Dhttp%253A%252F%252Fwww.jd.com%26_i%3D10%26activityId%3D2786",
"miniAppId":null,
"miniPathPage":null
},
"remark":"",
"created":"2019-07-18 17:39:54",
"activity_id":2786,
"activity_name":null,
"activity_content":"isv活动",
"business_id":"3243d1ff24c6471783f91081b2ee249b",
"activity_type":3,
"pack_type":5,
"pack_path":"http://storage.jd.local/devil2/234f3d53bb724f4b9a35b9fefd101670.txt?Expires=1576376077&AccessKey=oKcZrz9pj0heC7Zb&Signature=WGuZ7dWkOhsB0KrgkaopgkHOnLE%3D",
"pack_desc":"公众号中未匹配京东账号的粉丝总和",
"pack_name":"未匹配用户",
"pre_num":154,
"act_num":136,
"begin_time":"2019-07-18 17:13:00",
"end_time":"2019-07-19 17:13:00",
"send_time":"2019-07-18 17:13:00",
"activity_status":1
}
}

取消微信活动

说明

通过品牌商id和微信活动ID取消微信活动

请求

请求地址:/activity/wx/reject

请求方法:POST

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
activity_id Long 微信活动ID(创建微信活动返回的ID)
remark String 取消备注 50字符内

响应参数

名称 类型 描述
data boolean 是否成功

示例

请求参数:

{
"remark":"测试",
"master_id":111111,
"activity_id":2700
}

响应参数:

{
"code":0,
"msg":"success",
"data":true
}

转化落地页

说明

通过品牌商id和活动页地址转化落地页

请求

请求地址:/activity/wx/convertUrl

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID
url String 活动页地址,只能转化京东域内地址,例如:http://www.jd.com

响应参数

名称 类型 描述
data String 转化后的地址

示例

请求参数:

GET /activity/wx/convertUrl?master_id=111111&url=http://www.jd.com

响应参数:

{
"code":0,
"msg":"success",
"data":"sq.jd.com/YbI0Pxr"
}

查询公众号基础信息

说明

通过品牌商id和查询公众号基础信息

请求

请求地址:/activity/wx/weChatInfo

请求方法:GET

请求参数

名称 类型 是否必填 描述
master_id String 品牌商ID

响应参数

名称 类型 描述
appId String 公众号appId
appName String 公众号名称
pinFollowerNum String 公众号中匹配京东账号的粉丝总和
notPinFollowerNum String 公众号中未匹配京东账号的粉丝总和
allFollowerNum String 公众号全部粉丝

示例

请求参数:

GET /activity/wx/weChatInfo?master_id=111111

响应参数:

{
"code":0,
"msg":"success",
"data":{
"appId":"wx488592b4b17a80a9",
"appName":"耘野农夫",
"pinFollowerNum":0,
"notPinFollowerNum":163,
"allFollowerNum":163
}
}

公告、系统状态


获取公告列表

说明

获取公告列表,无分页

请求

请求地址:/notice/list

请求方法:GET

请求参数

响应参数

名称 类型 描述
notice_code String 公告编码 UUID
title String 公告标题
content String 公告内容
notice_type String 公告类型:SYS_UPGRADE=系统升级公告 OTHER=其他
notice_status String 公告状态:0=无效 1=有效
start_time Date 系统升级公告-开始时间,格式:yyyy-MM-dd HH:mm:ss
end_time Date 系统升级公告-结束时间,格式:yyyy-MM-dd HH:mm:ss
expire_time Date 公告过期时间

示例

请求参数:

GET /notice/list

响应参数:

{
"code":0,
"msg":"success",
"data":[
{
"notice_code":"63d09938-b447-4870-bd94-6b3a583645c1",

"title":"系统升级公告",
"content":"系统升级,请稍后登录",
"notice_type":"SYS_UPGRADE",
"notice_status":"1"
"start_time":"2019-07-30 00:00:00",
"end_time":"2019-07-30 02:00:00",
"expire_time":""
},
]
}

获取系统状态

说明

获取系统状态,仅返回启动的状态。如果接口无响应,则说明系统在升级。

请求

请求地址:/system/status

请求方法:GET

请求参数

名称 类型 是否必填 描述
system_code String 系统编码:ECRM_API

响应参数

名称 类型 描述
system_code String 系统编码:ECRM_API
status String 系统状态:1=启动

示例

请求参数:

GET /system/status?system_code=ECRM_API

响应参数:

{
"code":0,
"msg":"success",
"data":{
"system_code":"ECRM_API",
"status":"1"
}
}

附录

人群对象类型枚举值


人群对象的crowd_type值

说明
1 人群提取
2 人群计算
3 人群另存
4 人群上传
5 按比例人群抽取
6 按人数人群抽取
7 响应节点筛选
8 PIN转DeviceId

results matching ""

    No results matching ""