Skip to content
This repository was archived by the owner on Jan 13, 2020. It is now read-only.

sdk接口文档

xjandwqz edited this page Jun 25, 2019 · 1 revision

1.Api配置接口

  • 地址:/api/sdk/decide-config

  • 请求方式: get

  • 传入参数:

    参数名 必填 类型 描述 默认值
    tokenId String appid -
    appVersion String App版本号 -
    projectId String 项目datasource_name -
  • 响应类型: application/json

  • 响应结果:

 { isSugoInitialize: true,  //是否初始化SDK isHeatMapFunc: true, //是否启用热图功能 uploadLocation: 1, //上报地理位置时间间隔 isUpdateConfig: false, //强制拉取sdk配置 latestDimensionVersion: 1561357006, //维度最新版本号 latestEventBindingVersion: 1560244058 //事假最新版本号 } 

2.获取维度接口

  • 地址:/api/sdk/decide-dimesion

  • 请求方式: get

  • 传入参数:

    参数名 必填 类型 描述 默认值
    token String appid -
    app_version String App版本号 -
    projectId String 项目datasource_name -
  • 响应类型: application/json

  • 响应结果:

 { "dimensions": [ { "name": "manufacturer", //维度名称 "type": 2, //维度数据类型 "title": "设备制造商" //维度别名 }, { "name": "page_category", "type": 2, "title": "页面分类" } ], //维度信息集合 "position_config": 1, //上报地理位置时间间隔 "dimension_version": 1 //维度版本号 } 

3.获取事件接口

  • 地址:/api/sdk/decide-event

  • 请求方式: get

  • 传入参数:

    参数名 必填 类型 描述 默认值
    token String appid -
    app_version String App版本号 -
    projectId String 项目datasource_name -
  • 响应类型: application/json

  • 响应结果:

 { "event_bindings_version": 1561359546, //事件版本号 "page_info": [ //页面信息 { "isSubmitPoint": false, //是否上报点击位置 "page": "SugoDemo.NativeTableViewController", //页面路径 "page_name": "原生埋点", //页面名称 "similar": false, //无效 "category": "" //无效 } ], "h5_event_bindings": [ //h5事件 { "event_id": "232dcc16-0147-4539-bd5d-4f2b3e2348c7", //事件编号 "event_name": "分类", //事件名称 "event_type": "click", //事件触发类型 "target_activity": "io.sugo.sdkdemo.activity.WebActivity::/", //事件所属页面路径 "path": { //事件路径 android 为json 格式, ios为string "path": "div#msCancelBtn > span" }, "similar": false, //同类是否有效 "similar_path": "", //同类路径 "cross_page": false //全局有效 } ], "event_bindings": [ //原生事件信息 { "event_id": "17036460-375a-400b-ab6a-31ddcf00e567", //事件编号 "event_name": "登陆按钮", //事件名称 "event_type": "ui_view", //事件类型 "target_activity": "UIControlViewController", //所属页面 "path": "/UINavigationController/UIControlViewController/UIView/UIScrollView\[0\]/UIView\[0\]/UIView\[0\]/CustumButton\[(mp\_fingerprintVersion >= 1 AND mp\_varB == \\"ff26cdc54ac6ed20d564ad60fb667426036c681a\\")\]", //事件路径 "control_event": 64, // "table_delegate": null, "classAttr": {} //原生事件控件属性 } ] } 

4.获取维度和事件接口(老接口)

  • 地址:/api/sdk/decide

  • 请求方式: get

  • 传入参数:

    参数名 必填 类型 描述 默认值
    token String appid -
    app_version String App版本号 -
    projectId String 项目datasource_name -
  • 响应类型: application/json

  • 响应结果:

 { "event_bindings_version": 1561359546, //事件版本号 "page_info": [ //页面信息 { "isSubmitPoint": false, //是否上报点击位置 "page": "SugoDemo.NativeTableViewController", //页面路径 "page_name": "原生埋点", //页面名称 "similar": false, //无效 "category": "" //无效 } ], "h5_event_bindings": [ //h5事件 { "event_id": "232dcc16-0147-4539-bd5d-4f2b3e2348c7", //事件编号 "event_name": "分类", //事件名称 "event_type": "click", //事件触发类型 "target_activity": "io.sugo.sdkdemo.activity.WebActivity::/", //事件所属页面路径 "path": { //事件路径 android 为json 格式, ios为string "path": "div#msCancelBtn > span" }, "similar": false, //同类是否有效 "similar_path": "", //同类路径 "cross_page": false //全局有效 } ], "event_bindings": [ //原生事件信息 { "event_id": "17036460-375a-400b-ab6a-31ddcf00e567", //事件编号 "event_name": "登陆按钮", //事件名称 "event_type": "ui_view", //事件类型 "target_activity": "UIControlViewController", //所属页面 "path": "/UINavigationController/UIControlViewController/UIView/UIScrollView\[0\]/UIView\[0\]/UIView\[0\]/CustumButton\[(mp\_fingerprintVersion >= 1 AND mp\_varB == \\"ff26cdc54ac6ed20d564ad60fb667426036c681a\\")\]", //事件路径 "control_event": 64, // "table_delegate": null, "classAttr": {} //原生事件控件属性 } ], "dimensions": [ { "name": "manufacturer", //维度名称 "type": 2, //维度数据类型 "title": "设备制造商" //维度别名 }, { "name": "page_category", "type": 2, "title": "页面分类" } ] } 

5.Web获取分类接口

  • 地址: /api/sdk/desktop/page-categories-deployed?q=N4IghgDhCWAmIC4AEIDGAGAjGAnANgCNVUAWAMzACYAOEgVljzIHZ1mBTWS1azdnOmBAAacFAD6AN3YAnAM7QA9gDtEKdCAC

  • 请求方式: get

  • 传入参数:

    参数名 必填 类型 描述 默认值
    appid String appid -
    app_version String App版本号 -
  • 响应类型: application/json

  • 响应结果:

 { "success": true, //成功状态 "result": [ { "id": "r1iGOEv0pzG", //分类ID "name": "解决方案", //分类名称 "appid": "2c170b6be6bb15521bd8560a41f8c849", //所属app "app_version": "0", //APP版本 "event_bindings_version": "8", //事件绑定版本 "regulation": " http://sugo.io/solutions*", //分类匹配规则 "created_at": "2017-12-25T01:41:04.141Z", //时间 "updated_at": "2017-12-25T01:41:04.141Z" //时间 } ], "message": null, // 错误信息 "code": 200, //状态码 "type": "json" //数据类型 } 

6.Web获取页面信息接口

  • 地址: /api/sdk/desktop/page-info-list-deployed?q=N4IghgDhCWAmIC4AEIDGAGAjGAnANgCNVUAWAMzACYAOEgVljzIHZ1mBTWS1azdnOmBAAacFAD6AN3YAnAM7QA9gDtEKdCAC

  • 请求方式: get

  • 传入参数:

    参数名 必填 类型 描述 默认值
    appid String appid -
    app_version String App版本号 -
  • 响应类型: application/json

  • 响应结果:

 { "success": true, //成功状态 "result": [ { "isSubmitPoint": false, //是否上报点击位置 "id": "S1-MuNDCazG", //页面id "appid": "2c170b6be6bb15521bd8560a41f8c849", //所属appid "page": "http://sugo.io/tindex", //页面地址 "page_name": "Tindex产品介绍", //页面名称 "app_version": "0", //APP版本 "event_bindings_version": "8", //绑定事件版本 "similar": false, //无效 "category": "http://sugo.io/tindex", //页面所属分类(旧数据) "created_on": "2017-09-20T03:16:56.635Z", //创建时间              "changed_on": "2017-09-20T03:16:56.635Z" //修改时间 } ], "message": null, // 错误信息 "code": 200, //状态码 "type": "json" //数据类型 } 

7.Web埋点配置接口

  • 地址: api/sdk/desktop/decide?version=0&projectId=com\_H1bIzqK2SZ\_project\_HyAKaKC5Z&path\_name=http%3A%2F%2Fsugo.io%2F____%2F&token=2c170b6be6bb15521bd8560a41f8c849

  • 请求方式: get

  • 传入参数:

    参数名 必填 类型 描述 默认值
    token String appid -
    version String App版本号 -
    projectId String 项目datasource_name -
    path_name String 页面路径(多个以分隔符划分) -
    separator String 分隔字符 ____
  • 响应类型: application/json

  • 响应结果:

 { "success": true, //成功状态 "result": "", //结果 需要用lzstring解码 "message": null, //错误信息 "code": 200, "type": "json" } 

8.创建项目

  • /api/v2/uits/project-apply
    基本信息
  • 接口说明: 实现项目创建
  • 请求方式: post
  • 请求地址: /api/v2/uits/project-apply
  • 响应类型: json/application
  • 参数类型: application/json
  • ip白名单验证:
配置文件中,在ipWhiteList中添加即可 下方请求头验证为可选配置,通过配置文件中tokenSwitch控制 当tokenSwitch为true,ipWhiteList配置项为空时,会进入请求头验证, 当tokenSwitch为false时,不会进行任何验证 
  • 请求头验证: x-sugo-token: 项目名称_当前时间毫秒数(经过加密)
    • encrypt_xor('项目名称_当前时间毫秒数', '项目名称')
  • 请求头示例: RequestHeader["x-sugo-token"] =MzkwMzgzMDQ0MTIxNTE0MzEyMjMwODgwNjUxMTcxMTAwMzkwNjcwOTgxMDAwMzkwNTQwNTEwMzkwNTMwNTUwNTQwNjMwMzkwNTQwNTEwNjEwNTMwNDgwNjEwNTUwNTQwMzkwNjQwNzQwODMwNDQwNTUwNjMwNTUwNTUwMzkwNDcwNjgwODQwODMwNDY=
  • 请求头加密算法参考(Java版):
 public class SugoXorKit { /** 异或加密  * @param plainText 任意utf8字符串  * @param cipherKey 任意utf8密钥 默认值'sugo_cipher_xor'  * @return 加解密字符串  */ String encrypt(String plainText, String cipherKey) { if (plainText == null || "".equals(plainText) || cipherKey == null || "".equals(cipherKey)) { return null; } String key = str2hex(cipherKey); String val = str2hex(plainText); return xorStrings(key, val); } String str2hex(String str) { StringBuilder result = new StringBuilder(); for (int i = 0; i < str.length(); i++) { result.append('k' + Long.toString(str.charAt(i),16)); } return result.toString(); } String hex2str(String str) { String[] strArr = str.split("k"); StringBuilder result = new StringBuilder(); for (int i = 0; i < strArr.length; i++) { String item = strArr[i]; if (item != null && !"".equals(item)) { result.append((char) Integer.parseInt(item, 16)); } } return result.toString(); } String xorStrings(String key, String val) { StringBuilder result = new StringBuilder(); int keyLen = key.length(); int valLen = val.length(); int kIdx; for (int idx = 0; idx < valLen; idx++) { kIdx = idx < keyLen ? idx : idx % keyLen; int k = Integer.parseInt(String.valueOf(key.charAt(kIdx)), 36); int v = Integer.parseInt(String.valueOf(val.charAt(idx)), 36); result.append(Long.toString(v ^ k, 36)); } return result.toString(); } }
  • 调用加密
 public static void main(String[] args) { try { String sKey = "sugo_cipher_xor"; // 默认私钥key值,可自定义 String text = "广东数果"; // 需要加密文本 SugoXorKit xorKit = new SugoXorKit(); String enStr = xorKit.encrypt(text, sKey); System.out.println("加密字符串:" + enStr); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getMessage()); } }
  • 请求参数:

    参数名 是否必须 类型 描述 默认值
    name str 项目名称 --
    type str 取值:0=IOS,1=ANDROID,2=WEB,3=小程序 --
  • 参数示例:

{ "name": "项目名称", "type": "1" }
  • 结果示例:
{ "success": true, "result": { "projectId": "a", "prejectToken": "b" }, "message": null, "code": 200, "type": "json" }

9.项目授权接口

  • /v2/uits/project-accredit
    基本信息
  • 接口说明: 实现项目创建
  • 请求方式: post
  • 请求地址: /v2/uits/project-accredit
  • 响应类型: json/application
  • 参数类型: application/json
  • ip白名单验证:
配置文件中,在ipWhiteList中添加即可 下方请求头验证为可选配置,通过配置文件中tokenSwitch控制 当tokenSwitch为true,ipWhiteList配置项为空时,会进入请求头验证, 当tokenSwitch为false时,不会进行任何验证 
  • 请求头验证: x-sugo-token: 用户名_当前时间毫秒数(经过加密)

    • encrypt_xor('用户名_当前时间毫秒数', '项目名称')
  • 请求头示例: RequestHeader["x-sugo-token"] =MzkwMzgzMDQ0MTIxNTE0MzEyMjMwODgwNjUxMTcxMTAwMzkwNjcwOTgxMDAwMzkwNTQwNTEwMzkwNTMwNTUwNTQwNjMwMzkwNTQwNTEwNjEwNTMwNDgwNjEwNTUwNTQwMzkwNjQwNzQwODMwNDQwNTUwNjMwNTUwNTUwMzkwNDcwNjgwODQwODMwNDY=

  • 请求参数:

    参数名 是否必须 类型 描述 默认值
    userName str 用户名 --
    name str 姓名 --
    email str 邮箱 --
    projectName str 项目名称 --
  • 结果示例:

{ "success": true, "result": { "info": "success" }, "message": null, "code": 200, "type": "json" }