有数对外定制化开发文档(2024 Q2)

目录

相对上一个稳定版新增内容

  • 生成 token 接口支持项目粒度的管理员权限

API接口列表

  • 见pdf目录

API接口说明


所有接口调用失败返回结果

字段名称 参数类型 参数说明
code Int 错误码(非200)
message String 失败原因

关于数据权限传递参数详细说明

因为有多个接口使用到数据权限,这里的参数比较复杂,所以在这里单独说明一下,数据权限是根数据连接绑定的,用于控制用户在某个数据连接的某张表下看到的数据信息,数据权限分为行权限和列权限两种。

行权限

一个数据权限所用到的字段如下:

字段名称 参数类型 参数说明
dataConnectionId Int 数据链接id
database String(Optional) 数据库名称是否传递是由数据连接的类型决定的,也就是由在编辑数据模型时需不需要选择database决定的
tableName String(Optional) 表名,表名一般情况下必须传,如果不传表名,需要确保该连接下所有表名都有相同的字段
filterType String 筛选器类型, listFilter表示是列表筛选,treeFilter表示的是树状筛选
selectType String 筛选类型,表示是排除选择内容(unselect)还是保留选择内容(select)
filter Object 具体的筛选信息,树状筛选器和列表筛选器的具体信息不一致,看下面的说明
  • dataConnectionId的获取:

dataConnectionId的获取方法

  • 内置连接: 数据准备的输出表, 可以在浏览器控制台查看: store.current.config (其他类型的表也可以用这种方法)
dataConnectionId: 内置连接ID
database: 线上模式数据准备ID
tableName: 线上模式输出节点ID

内置连接表信息的获取方法

  • filter筛选器的具体内容
//关于一张表下面某个字段的信息
{
    "field": "地区",      //字段名称
    "dataType": "String"  //字段类型("Whole","Decimal","DateTime","String","Date","Time","Boolean"
}
//列表筛选器对应的filter字段内容如下:
{
  "dim": {                  //列表筛选对应的字段
    "field": "地区",
    "dataType": "String"
  },
  "select": [              //列表筛选所选择内容
    "东北",
    "华北"
  ]
}

//树状筛选器对应的filter字段内容如下:
{
  "or": [                  //"or"表示多个条件是或的关系,"and"表示多个条件是与的关系
    {
      "dims": [           //dims表示树状筛选所选择的维度字段成员信息
        {
          "field": "地区",
          "dataType": "String"
        },
        {
          "field": "省/自治区",
          "dataType": "String"
        }
      ],
      "cond": {           //cond表示的是筛选条件
        "inlist": [       //inlist表示是选择,excludelist表示排除
          [
            "东北",
            "黑龙江"
          ],
          [
            "华北",
            "河北"
          ]
        ]
      }
    }
  ]
}
列权限

一个列权限所用到的字段如下: | 字段名称 | 参数类型 | 参数说明 | |------------------|------------------|-----------------------------------------------------| | database | String(Optional) | 数据库名称是否传递是由数据连接的类型决定的,也就是由在编辑数据模型时需不需要选择database决定的 | | tableName | String | 表名 | | tableExprId | Number(Optional) | 如果限制的字段来自于自定义SQL,需要配置自定义sql的id | | tableAlias | String(Optional) | 自定义sql的场景下,需要传 | type | String | 列权限类型:dataLevel(禁止查看) 或者 presentationLevel(数据脱敏) | | dataMasks | Array | 具体的权限配置,见下方说明 |

  • dataMasks 筛选器内容
    // 对订单表的地区地段设置禁止查看
    {
    "tableName": "订单",
    "type": "dataLevel",
    "dataMasks": [{
      "field": "地区",
      "dataType": "String",
      "applyRange": ["view", "export"] //对查看报告和导出的时候设置该列禁止查看
    }]
    }

    token 相关

生成token接口

接口说明:

token主要是为了用户在使用集成页面时作登录和权限验证,如果用户想集成我们有数的报告和大屏,必须在有数环境中有一个可使用的账号。

基本信息:

属性
API /api/dash/util/genToken
Method POST

请求参数:

  • 用户名密码方式生成 token
字段名称 参数类型 参数说明
tokenType String 'userPassword'
email String 账户账号,如果邮箱唯一,就是邮箱,否则是uniqueId
password String 账户密码
  • tokenKey 方式生成 token
字段名称 参数类型 参数说明
tokenType String 'tokenKey'
key String 使用用户生成的 token key
  • 单点登录方式生成 token
字段名称 参数类型 参数说明
tokenType String 'custom'
uniqueId String(Optional) 账户账号,如果不提供,则使用 integrateToken 获取用户身份
integrateToken String 单点登录鉴权token,需要定制化开发对接

_ 其余可选参数

字段名称 参数类型 参数说明
authUniqueId String(Optional) 最终需要生成的鉴权帐号,如果不传就是用户名密码对应的用户本身,只有超管可以生成其它账号的鉴权token,别人只能生成自己的鉴权token
relationWithSystemPermission String(Optional) 只有 authUniqueId 配置的情况下且 openRp = true 时才生效,表示 resourcePermissions 字段与 authUniqueId 对应在 BI 系统里的资源权限关系,'or' 表示取并集,'and' 表示取交集,'ignore' 表示忽略 BI 系统中的权限,默认为 'or'
enableWatermark Bool(Optional) 是否开启水印信息,只有开启的情况下 watermark 参数才生效
watermark String(Optional) 水印信息,必须提供uniqueId字段
filterMap Object(Optional) 数据筛选条件(每个数据连接下对应的各个表字段的数据权限),详见上文中关于数据权限传递参数详细说明行权限部分
columnFilterMap Object(Optional) 数据筛选列权限(每个数据连接下对应的各个表字段的列权限),详见上文中关于数据权限传递参数详细说明列权限部分
tableFilterMap Object(Optional) 数据表筛选条件(表示能看到某个数据连接下面的哪些表),主要用于模型集成时使用,具体看用例
pillFieldMap Object(Optional) 更改指定pill下的某些字段
tableExprMap Object(Optional) 更改指定自定义sql的表达式
parameterMap Object(Optional) 动态更改全局参数和报告参数的值
expiryTime Int(Optional) token的过期时间(单位为s),默认为86400 * 30(一天)
resourcePermissions Arr(Optional) 设置用户可以访问的资源权限,这个权限与用户当前拥有的角色权限取交集
openRp Bool(Optional) 默认为false,表示是否开启资源权限过滤,只有等于true的情况下,resourcePermissions才起作用
clientSetting Object(Optional) 原先在url配置的一些显示参数可以放到token,加强安全性
useType String(Optional) token的使用场景,主要是用于删除token时,需要传'deleteToken',而且只有超管才能删除token
once Bool(Optional) 默认false,表示该token是否只允许某一个人访问,第一个人访问后,其它再访问将失效
domainId Number(Optional) 域ID,企业域用户可指定
autoRenew Object(Optional) 是否启动配置token自动续期,每次访问时自动续期当前token,该参数只有在 once =true的时候生效
applyScope String(Optional) 生成的权限范围, applyScope=Manage 表示包含了管理权限,比如可以做一些删除用户等操作;applyScope=Resource,表示只包含资源相关的预览、导出等权限;applyScope=Project,表示项目粒度的资源权限,只有项目管理员才能指定 Project,此时relationWithSystemPermission必须等于"ignore",并必须指定 authUniqueId或者authUserId,并且必须指定resourcePermissions;applyScope=Domain,表示域主可以生成其他人的token,此时必须指定 authUniqueId 或者 authUserId,且当前账号必须为域主,默认值是 Manage
projectId Number(Optional) 项目ID,只有 applyScope=Project 时才需要指定,而且必须指定,表示是哪个项目的管理权限
enableDefaultBookmark Bool(Optional) 通过token访问集成报告时是否开启默认书签,true表示开启,false表示不开启,默认false
parameterAliasMap Object(Optional) 用于修改报告中用到的参数值,和 parameterMap 功能类似,不过这个参数是根据参数名称修改的,具体可以看下面用例
reportDataFilters Arr(Optional) 用于控制某几个报告的数据权限的能力,通过指定报告、报告依赖的模型、报告依赖模型的表及字段等信息进行行权限和列权限的数据权限过滤,这个参数会严格校验每个参数,模型、表。字段、数据连接只要一个出现不匹配将无法使用该token集成报告。
uvId String(Optional) 用户在集成页面时统计用户的访问uv数据,如果使用管理员生成其他用户的token时,尤其是不在系统中的用户时,客户可以指定这个字段来统计到底最后是访问的这个集成链接,最终可以查看业务表 report_recent_visit.uv_id 获取该访问记录
     **5.2 对于 filterMap 的参数结构作了相应修改,支持权限的与或规则,兼容旧的数据结构,旧的数据结构默认是and的关系**
{
  "email": "zhangsan@163.com",
  "password": "123456",
  "authUniqueId": "lisi@163.com",
  "watermark": {
    "email": "zhangsan@163.com",
    "uniqueId": "zhangsan@163.com",
    "nick": "张三"
  },
  "enableDefaultBookmark": true,  // 开启默认书签
  "expireTime": 1000,
  "pillFieldMap": {
      "123": {            //数据模型id
          "12": {         //该数据模型下某个pillfieldId
              "expr": "12"   //需要替换的pill的一些属性
          }
      }
  },
  "tableExprMap": {
      "123": "select * from dev_online.bigviz_user"       //自定义sqlid对应的修改内容,id可以去对应的数据连接下的表信息->自定义sql处获取
  },
  "autoRenew": {
      "expiryTime": 20  //每次访问时自动续期 20 s,这个访问是指有接口访问到后端服务
  },
  "once": true,
  "parameterMap": {
      "123": "地区"       //key 为参数对应的fieldId, value 为参数的值,fieldId 需要去页面上开发者模式中查看
  },
  "uvId": "zhangsan", //用于统计zhangsan的访问记录
  "parameterAliasMap": { //key表示参数名称
        "全局参数-字符串": {
            "from": "global",  //from有三个取值:all表示既可以是报告粒度的参数也可以是全局参数,优先匹配全局参数,report表示报告中的参数,global表示全局参数
            "value": "helloworld" //value就是该参数被替换的值,可以根据参数的类型和场景使用不同的类型的数值。
        },
        "报告-字符串": {
            "from": "report",
            "value": "helloworld-报告"
        },
    "全局参数-字符串-1": {
            "from": "all",
            "value": "helloworld-报告"
        }
    },
  "clientSetting": {
    "integrate": {           //integrate字段表示是报告集成页面配置
      "ignoreSearch": true, //表示是否忽略url中的search部分,默认为false
      "mode": "simple",   //集成模式
      "toolbar": ["export"],   //打印,刷新,导出选项等
      "side": true, //是否需要侧边栏
      "hidePublic": true, //是否展示公共文件夹
      "hidePrivate": true, //是否展示私人文件夹
      "hideTitle": true, //是否隐藏标题栏
      "hideScaleBar": true, //是否隐藏tab页面区域缩放栏
        "tabColor": "red", // tab页面颜色设置
        "hidePageBar": true, //整个报告底部工具栏隐藏
      "enableReportDetail": true, //报告详情展示
        "hideProgressBar": true, //顶部进度条隐藏
        "scale": 50, //缩放配置
        "bottomBarPos": "top", //底部栏放在顶部配置
        "disableGraphicJump": true, //移动端双击禁止跳转
      "fit": true, //集成页面自适应宽度时不留白,默认为false
      "defaults": {         //设置筛选器的默认值
        "列表筛选器控件id":{
          "selected": [], // Array
          "exclude": false //Boolean
        },
        "日期筛选器控件id":{
          "type": "StaticTime",
          "minBound": "2016-07-01 00:00:00",
          "maxBound": "2016-07-01 00:00:00"
        }
      },
      "customCssId": "xc14bft1", // 指定使用哪个自定义CSS
      "permission": { // 此处的权限配置主要用于图表功能的配置(如:图表导出功能、数据预览、排序级别等功能)
        "closeMoreMenu": false, // 图表更多按钮关闭
        "global": {
            "export":["image","excel","pdf"],
            "view":true, // 查看数据
            "sortPriority":true, // true 排序级别
            "inteExplore":true, // true 智能分析
            "refreshHist":true, // true 查看刷新历史记录
            "setWarning":true, // true 设置度量预警
            "viewMaxReport":true, // 查看最大化
            "dataDoctor":true, // 数据医生
            "copyData":true, // 复制数据
            "graphicLink":true // 图表链接
          }
      }
    },
    "chatBi": { //chatBi字段表示是ChatBI集成页面配置
      "hideApp": false, // 移动端二维码
      "hideExport": false, // 导出管理
      "hideHelp": false, // 帮助中心以及跳转帮助中心的入口
      "hidePopo": false, // 技术支持
      "hideUser": false, // 当前用户
      "hideFavorite": true, // 收藏、收藏夹
      "hideHistory": true, // 历史会话
      "hideMyShare": true, // 隐藏我的分享
      "hideFilterSet": true, // 隐藏筛选集
      "hideChatModeSwitcher": true,  // 隐藏对话模式切换按钮
      "hideDataModelSelector": false, // 隐藏数据模型选择按钮
      "canEditCalculatedField": false, // 是否可以编辑计算字段
      "hideAccountLogo": true, // 隐藏账户Logo
      "showCloseIcon": false, // 是否展示右上角的关闭按钮
      "showInHistory": false, //默认是false,表示集成的问答是否在历史记录展示
      "defaultChatMode": "credible",  // 默认问答模式 "credible" | "professional",默认"credible"
      "chatTopic": "dataModel", // 对话主题,"dataModel"|"indicator" 默认为"dataModel",
      "indicatorName": "", // 指标名称
      "dataModelId": -1, // 数据模型id
      "tagId": -1, // 模型标签id,查询限制特定标签下的数据模型
      "ignoreAiUserCorrect": false, // 跳过选择表、字段、成员等步骤
      // 以下参数仅在chatbi/dialogIntegration路由下生效
      "hideQueryExplanation": false, // 隐藏查询解释
      "hideQueryTable": false, // 隐藏查询表
      "hideQueryToolbarMore": false, // 隐藏查询工具栏的更多
      "hideGraphicChangeType": false, // 隐藏图标切换类型
      "hideQueryForcast": false, // 隐藏预测
      "hideGraphicToolbar": false, // 隐藏图表工具栏
      "hideGraphicMax": true, // 隐藏图表全屏操作,默认隐藏
      "hideGraphicRefresh": true, // 隐藏图表刷新操作,默认隐藏
      "hideGraphicRefLine": false, // 隐藏图表参考线
      "hideAskInfo": false, // 隐藏ask chatItem
      "dataModelIds": "1,2,3", // 指定查询的模型,支持多个,英文逗号,分隔
      "question": "东北地区的生产总值?", // 问题内容
      "dialogId": "123" // 会话的id,如果设置了不会请求新的对话
    }
  },
  "openRp": true,    //表示是否开启资源权限过滤(resourcePermissions
  "resourcePermissions": [{
    "projectId": 1,     //资源所在的项目id
    "resourceType": "NEW_REPORT",   //资源类型NEW_REPORT(报告),DATA_MODEL(数据模型),DATA_CONNECTION(数据连接),SCREEN(大屏), NEW_SCREEN(发布大屏)
    "resourceNamePaths": ["hzzhangdianpeng", "3.10", "未命名报告(1)"],  //报告所在的文件夹名字路径,这个参数与resourceId可以21(有文件夹概念的资源需要添加文件夹的路径,否则报错)
    "isFolder": 0,  //是文件夹还是普通资源,默认为0
    "permissions": ["view"]  //资源对应的权限['view', 'edit', 'export', 'copy']
  },{
    "projectId": 1,
    "resourceType": "NEW_REPORT",
    "resourceId": 173,  //报告id,这个参数与resourceNamePaths可以21,都是为了确定对哪个报告做权限控制
    "isFolder": 0,
    "permissions": ["view"]
  },{
      "resourceType": "DATA_MODEL",  //可以使用哪些模型
      "resourceId": 700288358,  //模型ID
      "isFolder": 0,
      "permissions": ["view"]
  },{
      "resourceType": "DATA_MODEL",
      "resourceId": 700289868,
      "isFolder": 0,
      "permissions": ["view"]
  }],
  "filterMap": {
    "123": {
      "rule": "or",   //5.2版本开始支持传递与或规则,用"or""and"表示
      "dataFilters": [{
        "filterType": "listFilter",
        "selectType": "select",
        "tableName": "订单总表",
        "filter": {
          "dim": {
            "field": "地区",
            "dataType": "String"
          },
          "select": [
            "东北",
            "华北"
          ]
        }
      },
      {
        "filterType": "listFilter",
        "selectType": "select",
        "tableExprId": 3,    //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
        "filter": {
          "dim": {
            "field": "地区",
            "dataType": "String"
          },
          "select": [
            "东北",
            "华北"
          ]
        }
      }
    ]},
    "700006204": [
      {
        "filterType": "listFilter",
        "selectType": "select",
        "tableName": "订单总表",
        "filter": {
          "dim": {
            "field": "地区",
            "dataType": "String"
          },
          "select": [
            "东北",
            "华北"
          ]
        }
      },
      {
        "filterType": "listFilter",
        "selectType": "select",
        "tableExprId": 3,    //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
        "filter": {
          "dim": {
            "field": "地区",
            "dataType": "String"
          },
          "select": [
            "东北",
            "华北"
          ]
        }
      },
      {
        "filterType": "treeFilter",
        "selectType": "select",
        "tableName": "订单总表",
        "filter": {
          "or": [
            {
              "dims": [
                {
                  "field": "地区",
                  "dataType": "String"
                },
                {
                  "field": "省/自治区",
                  "dataType": "String"
                }
              ],
              "cond": {
                "inlist": [
                  [
                    "东北",
                    "黑龙江"
                  ],
                  [
                    "华北",
                    "河北"
                  ]
                ]
              }
            }
          ]
        }
      },
      {
        "filterType": "treeFilter",
        "selectType": "select",
        "tableExprId": 3,    //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
        "filter": {
          "or": [
            {
              "dims": [
                {
                  "field": "地区",
                  "dataType": "String"
                },
                {
                  "field": "省/自治区",
                  "dataType": "String"
                }
              ],
              "cond": {
                "inlist": [
                  [
                    "东北",
                    "黑龙江"
                  ],
                  [
                    "华北",
                    "河北"
                  ]
                ]
              }
            }
          ]
        }
      }
    ],
    "700006205": [
      {
        "filterType": "listFilter",
        "selectType": "unselect",
        "database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
        "tableName": "订单总表",
        "filter": {
          "dim": {
            "field": "地区",
            "dataType": "String"
          },
          "select": [
            "东北",
            "华北"
          ]
        }
      },
      {
        "filterType": "treeFilter",
        "selectType": "unselect",
        "database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
        "tableName": "订单总表",
        "filter": {
          "or": [
            {
              "dims": [
                {
                  "field": "地区",
                  "dataType": "String"
                },
                {
                  "field": "省/自治区",
                  "dataType": "String"
                }
              ],
              "cond": {
                "excludelist": [
                  [
                    "东北",
                    "黑龙江"
                  ],
                  [
                    "华北",
                    "河北"
                  ]
                ]
              }
            }
          ]
        }
      }
    ]
  },
  "columnFilterMap": {
    "1234": { //数据连接id
        "rule": "or"
        "type": "column", //只支持column
        "dataFilters": [{
            "tableName": "订单",
            "type": "dataLevel",
            "dataMasks": [{
              "field": "地区",
              "dataType": "String",
              "applyRange": ["view", "export"] //对查看报告和导出的时候设置该列禁止查看
            }]
        }]
    }
  }
  "reportDataFilters": [
    {
      "reportId": "14377", //报告ID
      "dataModelFilters": [ //报告下面的数据行筛选列表
        {
          "dataModelId": 700284409, //报告依赖的模型ID
          "dataConnectionId": 700315973, //该模型中使用到的数据连接ID
          "rule": "or",  //权限规则
          "type": "row", //权限类型 row:行权限, column: 列权限
          "dataFilters": [ // 具体有哪些权限,该配置参考 filterMap 里的配置保持一致
            {
              "filterType": "listFilter",
              "selectType": "select",
              "tableName": "订单",
              "filter": {
                "dim": {
                  "field": "地区",
                  "dataType": "String"
                },
                "select": [
                  "东北",
                  "华北"
                ]
              }
            },
            {
              "filterType": "treeFilter",
              "selectType": "select",
              "tableName": "订单",
              "filter": {
                "or": [
                  {
                    "dims": [
                      {
                        "field": "地区",
                        "dataType": "String"
                      },
                      {
                        "field": "省/自治区",
                        "dataType": "String"
                      }
                    ],
                    "cond": {
                      "inlist": [
                        [
                          "东北",
                          "黑龙江"
                        ],
                        [
                          "华北",
                          "河北"
                        ]
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        {
          "dataModelId": 700284409, //报告依赖的模型ID
          "dataConnectionId": 700315973, //该模型中使用到的数据连接ID
          "rule": "or",  //权限规则
          "type": "row", //权限类型,
          "dataFilters": [{
              "tableName": "订单",
              "type": "dataLevel",
              "dataMasks": [{
                "field": "地区",
                "dataType": "String",
                "applyRange": ["view", "export"] //对查看报告和导出的时候设置该列禁止查看
              }]
          }]
        }
      ]
    }
  ],
  "tableFilterMap": { //表权限过滤,控制到schema的粒度。
        "700310203": { //对哪个数据连接进行控制
            "rule": "and", //多个筛选之间关系,这个表示的同一个库下面如何控制。
            "dataFilters": [{
                "database": "dev_netease", //对哪个库下的表进行控制
                "produced": "Original", //原始表
                "selectType": "select", //选择
                "select": ["bigviz_user", "api_name"] //表示只能看到 dev_netease 这个库下面的 bigviz_user  api_name 两张表
            },{
                "produced": "UserDefinedSQL", //自定义SQL
                "selectType": "select", //选择
                "select": ["1740"] //表示只能看到自定义SQL ID  = 1740 这个表。
            }]
        }
    }
}

_ 单点登录方式生成token

字段名称 参数类型 参数说明
uniqueId String 是单点登录用户系统中唯一标志(email/uid等)
integrateToken String 用于验证用户合法性加密字段,有数后端服务会调用用户系统作鉴权
watermark String(Optional) 水印信息
filterMap Object(Optional) 数据行权限筛选条件(每个数据连接下对应的各个表字段的数据权限)
columnFilterMap Object(Optional) 数据列权限配置(每个数据连接下对应的各个表字段的列权限)
expiryTime Int(Optional) token的过期时间,默认为86400 * 30(一天)
pillFieldMap Object(Optional) 更改指定pill下的某些字段
resourcePermissions Arr(Optional) 设置用户可以访问的资源权限,这个权限与用户当前拥有的角色权限取交集
clientSetting Object(Optional) 原先在url配置的一些显示参数可以放到token,加强安全性
{
  "uniqueId": "123456",
  "integrateToken": "ljasljlkjdsiueiwkjajjsdkjhklajljsk",
  "watermark": {
    "email": "zhangsan@163.com",
    "nick": "张三"
  },
  "expireTime": 1000,
  //这里filterMap生成可以参考用户名密码生成token的方式
  "filterMap": {
    "700006204": [
      {
        "filterType": "listFilter",
        "selectType": "select",
        "tableName": "订单总表",
        "filter": {
          "dim": {
            "field": "地区",
            "dataType": "String"
          },
          "select": [
            "东北",
            "华北"
          ]
        }
      },
      {
        "filterType": "treeFilter",
        "selectType": "select",
        "tableName": "订单总表",
        "filter": {
          "or": [
            {
              "dims": [
                {
                  "field": "地区",
                  "dataType": "String"
                },
                {
                  "field": "省/自治区",
                  "dataType": "String"
                }
              ],
              "cond": {
                "inlist": [
                  [
                    "东北",
                    "黑龙江"
                  ],
                  [
                    "华北",
                    "河北"
                  ]
                ]
              }
            }
          ]
        }
      }
    ],
    "700006205": [
      {
        "filterType": "listFilter",
        "selectType": "unselect",
        "database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
        "tableName": "订单总表",
        "filter": {
          "dim": {
            "field": "地区",
            "dataType": "String"
          },
          "select": [
            "东北",
            "华北"
          ]
        }
      },
      {
        "filterType": "treeFilter",
        "selectType": "unselect",
        "database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
        "tableName": "订单总表",
        "filter": {
          "or": [
            {
              "dims": [
                {
                  "field": "地区",
                  "dataType": "String"
                },
                {
                  "field": "省/自治区",
                  "dataType": "String"
                }
              ],
              "cond": {
                "excludelist": [
                  [
                    "东北",
                    "黑龙江"
                  ],
                  [
                    "华北",
                    "河北"
                  ]
                ]
              }
            }
          ]
        }
      }
    ]
  }
}

成功数据返回:

{
    "code": 200,
    "result": "1503575355359c4fdea8ec1683ed10edd91ae"
}

reportDataFilters失败返回结果:

{
    "code": 743,  // 如果 reportDataFilters 输入有问题会返回该 code
    "message": "reportDataFilters 中对应的模型不存在 dataModelId = 700284408",
}

删除token接口

接口说明:

如果想删除某个token,我们命名为变量t,那么首先需要生成一个专门删除token的token,useType='deleteToken',只有超管才能删除token

基本信息:

API /api/dash/util/rmToken
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 用于删除t的鉴权token
t String 待删除的token

成功数据返回:

{
    code: 200,
    result: "ok"
}

续期 token 接口

接口说明:

如果想给某个token 进行续期,我们命名该token变量为t,那么首先需要生成一个专门更新token的token,useType='updateToken',只有超管才能续期token

基本信息:

API /api/dash/util/renewToken
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 用于续期的鉴权token
t String 待续期的token

成功数据返回:

{
    code: 200,
    result: "ok"
}

报告相关

获取用户拥有的报告文件夹列表接口

接口说明:

获取用户在有数有权限的报告文件夹列表

基本信息:

API /api/dash/folder/list
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,只有在项目中的用户才能调用该接口
projectId Int 某个项目的id
needPermission String(Optional) 用户权限过滤,"edit"编辑权限,"export"导出权限, "view"预览权限, "copy"复制权限,默认取并集
type Int(Optional) 不传或者传2是报告;传3是大屏;传4是发布大屏, 传1是模型
enableChatBi Int(Optional) 只有 type = 1 时有用,输入1表示只返回开启 chatBi 的模型列表
publishRelatedId Int(Optional) 若开启发布功能,此为发布状态报告id,id则为报告草稿id
needSnapshot Bool(Optional) 是否为文件夹列表中的报告生成快照,默认为否
{
    token: "1503575355359c4fdea8ec1683ed10edd91ae",
    projectId: 1,
    permission: "export"
}

成功数据返回:

list是一个树状的报告文件夹列表,items字段存储该文件夹下的报告列表,folders字段存储该文件夹下的文件夹列表

{
    code: 200,
    result: {
        folders: [{  //最外层文件夹 6.2 版本开始变为 folders
            id: 3,          //文件夹id
            name: "我的报告", //文件夹名称
            items: [{ //items根据传入的type不同代表不同的资源,比如报告、大屏、模型等
                isFolder: 0,
                id: 3,          //报告id
                name: "我的报告", //报告名称
                permissions: ['export', 'copy', 'edit', 'view']
            }],
            folders [],
            permissions: ['add', 'edit']
        }],
        items: []
        addPermission: 3,   //3表示有新增报表的权限
    }
}

复制报告接口

接口说明:

将某个报告,复制到同项目的另一个文件夹中

基本信息:

API /api/dash/report/copy
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,只有在项目中的用户才能调用该接口
reportId Int 报告ID
folderId Int 目标文件夹的 ID
title String 复制后的新名字
category Int 0: 目标文件夹为公共文件夹;1:目标文件夹为私人文件夹

成功数据返回:

{
    "code": 200,
    "result": {
        "id": 6162,
        "title": "aaaa",
        "category": 0,
        "projectId": 63780,
        "permissions": [
            "view",
            "edit",
            "copy",
            "export",
            "share",
            "mail"
        ]
    },
    "logPath": "http://127.0.0.1:8009/operation/log/fNy78UctuDQ3geEsBJAm6m"
}

失败数据返回: 如果目标文件夹已存在同名报告,则会复制失败。

{
    "code": 732,
    "message": "标题命名重复",
    "result": {},
    "errType": "ERR",
    "logPath": "http://127.0.0.1:8009/operation/log/xyJxE1PzouoZ64WHz6Ww2Y"
}

获取某张报告的全方位信息

接口说明

根据报告id,返回报告所在域、项目,使用到的数据模型,表、数据连接,过去七天访问量,过去七天访问人次等信息。

权限说明

使用 token 访问,只有项目管理员才能使用该接口

基本信息

请求路径
API /api/dash/report/info
请求方法 GET

请求参数

字段名称 参数类型 参数说明
token String 用于鉴权
reportId Number 报告id
needStatisticInfo Optional(Bool) 是否返回统计信息(last7days和totalView),默认为true

返回结果示例:

{
  "code": 200,
  "result": {
    "domain": { //域信息
      "id": 1,
      "name": "netease"
    },
    "project": { //项目信息
      "id": 64464,
      "name": "猛犸测试项目"
    },
    "report": { //报告信息
      "id": 14377,
      "title": "权限测试"
    },
    "creator": { // 报告创建人信息
      "id": 123456,
      "nick": "张三",
      "uniqueId": "zhansan@corp.netease.com",
      "email": "zhansan@corp.netease.com"
    },
    "dataConnections": [ //数据连接信息
      {
        "userName": null,
        "type": "excel", //数据连接类型
        "port": null,
        "server": null,
        "namespace": null,
        "mammutCatalog": null,
        "id": 700315973,
        "name": "超市",
        "tables": [ //表
          {
            "status": "direct",
            "dataModelId": 700284409,
            "tableExprId": null,
            "database": null,
            "tableName": "订单",
            "dataConnectionId": 700315973,
            "produced": "Original",
            "fields": [ //字段
              {
                "field": "产品名称",
                "dataType": "String"
              },
              {
                "field": "制造商",
                "dataType": "String"
              },
              {
                "field": "发货日期",
                "dataType": "DateTime"
              },
              {
                "field": "国家",
                "dataType": "String"
              },
              {
                "field": "地区",
                "dataType": "String"
              },
              {
                "field": "城市",
                "dataType": "String"
              },
              {
                "field": "子类别",
                "dataType": "String"
              },
              {
                "field": "客户名称",
                "dataType": "String"
              },
              {
                "field": "省/自治区",
                "dataType": "String"
              },
              {
                "field": "细分",
                "dataType": "String"
              },
              {
                "field": "订单Id",
                "dataType": "String"
              },
              {
                "field": "订单日期",
                "dataType": "DateTime"
              },
              {
                "field": "邮寄方式",
                "dataType": "String"
              },
              {
                "field": "成本",
                "dataType": "Whole"
              },
              {
                "field": "折扣",
                "dataType": "Decimal"
              },
              {
                "field": "数量",
                "dataType": "Whole"
              },
              {
                "field": "类别代码",
                "dataType": "Whole"
              },
              {
                "field": "销售额",
                "dataType": "Whole"
              }
            ]
          }
        ]
      }
    ],
    "last7days": [
      {
        "date": "2023-09-09",
        "dayView": 0,
        "dayViewPerson": 0
      },
      {
        "date": "2023-09-10",
        "dayView": 0,
        "dayViewPerson": 0
      },
      {
        "date": "2023-09-11",
        "dayView": 0,
        "dayViewPerson": 0
      },
      {
        "date": "2023-09-12",
        "dayView": 0,
        "dayViewPerson": 0
      },
      {
        "date": "2023-09-13",
        "dayView": 0,
        "dayViewPerson": 0
      },
      {
        "date": "2023-09-14",
        "dayView": 0,
        "dayViewPerson": 0
      },
      {
        "date": "2023-09-15",
        "dayView": 1,
        "dayViewPerson": 1
      }
    ],
    "totalView": 15
  },
  "apiCost": 68,
  "logPath": "http://127.0.0.1:8009/operation/log/thNQ7UrwZogtjnbBtv3sKS"
}

获取报告中访问明细

接口说明

根据报告ID获取报告的访问详情: 包括访问行为和访问时间

基本信息

属性
API /api/dash/report/detailLog
Method GET

请求参数

字段名称 参数类型 参数说明
token String 鉴权信息
reportId Number 报告ID
action Opt(String) 操作类型, 见枚举
beginTime Opt(String) 开始时间
endTime Opt(String) 结束时间
userId Opt(Number) 筛选访问用户
keyword Opt(String) 关键词: 可以搜索用户昵称获取uniqueId
sort Opt(String) 排序字段
limit Opt(Number) 返回结果数量限制
offset Opt(Number) 返回结果偏移量

操作类型枚举:

操作编码 操作类型 操作编码 操作类型
view 浏览报告 edit 编辑报告
copy 复制报告 share 分享报告
exportReport 导出报告(导出报告Excel) exportComponent 导出报表(导出某个组件的Excel)

调用示例

{
    "reportId": 12345,
    "beginTime": "2024-02-17 00:00:00",
    "endTime": "2024-02-17 23:59:59"
}

返回示例

{
    "code": 200,
    "result": {
        "list": [
            {
                "id": 1370206,
                "action": "编辑报告",
                "info": {
                    "from": "triggerEdit"
                },
                "platform": "web",
                "creator": "xxxx",
                "uniqueId": "jianglonggui@corp.netease.com",
                "reportId": 20187,
                "triggerName": "User",
                "creatorId": 12224,
                "createTime": "2024-02-17T13:24:36.000Z",
            }
        ],
        "count": null
    },
    "apiCost": 81
}

获取报告中用到的字段信息

接口说明

根据报告ID获取用到的字段信息、指标信息、模型和数据连接信息

基本信息

属性
API /platform/ext/reportTableInfo
Method POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权信息
reportId Number 报告ID

调用示例

{
    reportId: 12345
}

返回示例

{
  "code": 200,
  "result": {
      "id": 20188,                                    // 报告ID
      "name": "czy趋势分析图",                 // 报告名称
      "components": [{
            "id": "c-nbCPxg77cQFQV1ELedcpQp",        // 组件ID
            "name": "产品_ID、城市、发货日期",            // 组件名称
            "fields": [
                {
                    "dataConnectionId": 700318382,  // 组件用的数据连接ID
                    "tableName": "oN03-超市三万行-2022-09-09", // 表名
                      "database": "xxx", // 数据库名
                    "field": "产品_ID", // 字段名
                    "role": "Dimension", // 度量(Measure), 维度(Dimension)
                    "alias": "产品_ID",  // 字段别名
                    "comment": "产品_ID",  // 字段注释, 描述
                    "indicatorName": "xxx"  // 指标名称
                }]
        }],
        "dataConnections": [{   // 数据连接信息
            "id": 700318245,
            "type": "excel",
            "host": null,
            "port": null,
            "userName": null,
            "parameters": null
      }],
      "dataModels": [            // 数据模型信息
          {
              "id": 53259,
              "name": "超市3万行",
              "dataConnectionId": 700318382,
              "config": {
                  "status": "direct",
                  "tables": [
                      {
                          "produced": "LogicalTable",
                          "logicalTableId": 1,
                          "tables": [
                              {
                                  "tableId": 1,
                                  "tableAlias": "oN03-超市三万行-2022-09-09",
                                  "produced": "Original",
                                  "dataConnectionId": 700318382,
                                  "tableName": "oN03-超市三万行-2022-09-09",
                                  "logicalTableId": 1
                              }
                          ]
                      }
                  ]
              },
              "pivotSchema": {}
          }
      ],
      "creator": {            // 报告创建者
          "id": 11834,
          "nick": "xxx",
          "uniqueId": "xxx@corp.netease.com"
      },
      "modifier": {        // 报告修改者
          "id": 11834,
          "nick": "xxx",
          "uniqueId": "xxx@corp.netease.com"
      }
  }

获取报告中图表数据的接口

接口说明:

根据报告 id 找到报告中图表的数据

基本信息:

API /api/dash/report/getData
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须有对应报告的预览权限
reportId Number 报告id
limit Number 单个图表最大数据行数限制。不传默认2万行
type String 'report'-报告,返回整个报告中的图表数据; 'dashboard'-页面,需额外传参数 dashboardIds,此时只返回对应的页面中的图表数据
dashboardIds Arr(Number) 页面id。这些页面需要在 reportId 对应的报告中
cache Bool 是否使用缓存数据。默认为false
defaultFilters filters(Optional) 筛选器,与导出图片和pdf接口中的defaultFilters字段格式一致
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "reportId":6177,
      "dashboardIds": [12255, 10962],
    "type": "dashboards",
    "cache": true,
    "defaultFilters": {
      "c-bQo8b75xnJqmhvnJpYNXtW": {
          "selected": [
              "2020",
              "2021",
              "2022",
              "2023"
          ],
          "exclude": false
      },
      "c-gJLpNWPGADEg1Gx5zZBGHk": {
          "type": "StaticTime",
          "minBound": "2022-02-02 00:00:00",
          "maxBound": "2023-03-12 24:00:00"
      }
  }
}

成功数据返回:

{
    "code": 200,
    "result": [
        {
            "normalSheetData": [  // 图表数据
                [
                    "计算字段1"
                ],
                [
                    0
                ]
            ],
            "dashboardTitle": "页面 2", // 页面名称
            "componentTitle": "指标看板" // 图表名称
        },
        {
            "normalSheetData": [
                [
                    "细分",
                    "利润"
                ],
                [
                    "公司",
                    684036.7
                ],
                [
                    "消费者",
                    1059953.47
                ],
                [
                    "小型企业",
                    412569.35
                ]
            ],
            "dashboardTitle": "页面 1",
            "componentTitle": "利润(按细分划分)"
        }
    ],
    "logPath": "http://127.0.0.1:8009/operation/log/nYqzu9pGur46gqqhXdmv3T"
}

获取报告基础信息接口

接口说明:

根据报告 id 获取报告的基础信息

基本信息:

API /api/dash/report/ext/get
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须有对应报告的预览权限
reportId Number 报告id
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "reportId":6177,
}

成功数据返回:

{
    "code": 200,
    "result": {
      "reportName": "报告1", //报告名称
      "uniqueId": "zhangsan@corp.netease.com", //报告创建人账号
      "nick": "张三", //报告创建人昵称
      "createTime": "2023-07-12T07:22:48.000Z", //报告创建时间
      "recentVisitTime": "2024-02-19T02:05:13.000Z", //当前用户最近访问时间
      "snapshotLink": "http://nos.netease.com/youdata-test/capture-devNetease-20128-12375-7TFrUtSd.png" //快照链接
    },
    "logPath": "http://127.0.0.1:8009/operation/log/nYqzu9pGur46gqqhXdmv3T"
}

通过表信息预加载相关报告数据

接口说明: 根据用户输入的某张表信息,对使用到该表所有的图表进行预加载,以便进行数据的实时更新

API /api/dash/cacheTask/flushByTable
Method POST
字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
dataConnectionId Int 数据连接ID
database Optional(String) 数据库
tableName String 数据库下的某张表

输入用例

{
  "token": "slksdkasklkldsjkksjkdssjlkdjjskdjsdlkjds",
  "dataConnectionId": 700310511,
  "database": "dev_netease",
  "tableName": "bigviz_user"
}

返回结果示例:

{
    "code": 200,
    "result": 20 //新建数据模型的 ID
}

根据路径添加报告文件夹

在某项目的公共文件夹下面,根据path创建报告的文件夹,如果path中的文件夹不存在,会自动创建,如果文件夹已经存在,则返回这个文件夹的 ID。

  • 方式一: 在某项目的公共文件夹下面,根据path创建报告的文件夹,如果path中的文件夹不存在,会自动创建,如果文件夹已经存在,则返回这个文件夹的 ID

  • 方式二: 根据父文件夹创建子文件夹, 如果文件夹已经存在,则返回这个文件夹的 ID

基本信息:

属性
API /api/dash/folder/ext/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
projectId Number 项目ID
path Opt(Array(String)) 文件夹路径,报告文件夹最多可以填四层
type String 报告(NEW_REPORT), 数据模型(DATA_MODEL), 数据连接(DATA_CONNECTION)
parentId Opt(Number) 父文件夹ID, 根目录为0
name Opt(String) 填写 parentId 时需要传文件夹名称
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "type": "NEW_REPORT",
  "path":["文件夹1", "文件夹2"]
}

返回

{
    "code": 200,
    "result": 123 // 最后一级文件夹的ID
}

根据路径删除报告文件夹

递归的删除某项目下,指定路径的最后一个文件夹,以及文件夹下面的内容

基本信息:

属性
API /api/dash/folder/ext/delete
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
projectId Number 项目ID
path Array(String) 文件夹路径
type String 目前只能写 NEW_REPORT
force Option(Bool) 如果为true,当文件夹下有内容时会强制删除这个文件夹

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "type": "NEW_REPORT",
  "path":["文件夹1", "文件夹2"]
}

返回

如果文件夹下有内容,会返回 1,表示没有删除这个文件夹,如果要强制删除,得传 force: true

{
    "code": 200,
    "result": 1
}

如果文件夹下没有内容,会正常删除删除这个空文件夹

{
    "code": 200,
    "result": 0
}

重命名文件夹

接口说明 重命名文件夹,如果传入的文件夹名称和当前目录下的文件夹名称重复了,会返回重复信息。

API /api/dash/folder/ext/renameFolder
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
id Int 文件夹id
name String 新的文件夹名称

输入用例

{
  "token": "171706912121966f879edbd3e721c888472f0",
  "id": 1,
  "name": "test1"
}

更新成功返回结果示例:

{
    "code": 200,
}

名称重复返回结果示例:

{
  "code": 200,
  "result": {
      "titleRepeat": true, //是否重复:是
      "newName": "文件夹(1)" //不重复的新名称,可以直接使用newName作为更新名称进行重试。
  }
}

新增报告接口

新增一个报告,如果重名会报错。

基本信息:

属性
API /api/dash/report/ext/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
projectId Number 项目ID
title String 新添加的报告名称
folderId Option(Int) 报告所在的文件夹的id,必须是公共文件夹ID,跟 path 二选一,如果是空数组代表是根目录
path Option(Arr(String)) 报告所在的公共文件夹的路径,跟 folderId 二选一,如果填0代表公共文件夹

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "title": "报告名称1",
  "path":["文件夹1"]
}
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "title": "报告名称1",
  "folderId": 123
}

返回

{
    "code": 200,
    "result": {
        "id": 123, // 新增的报告ID
      "title": "报告名称"
    }
}

删除报告接口

删除一个报告,如有资源依赖,删除会失败。

基本信息:

属性
API /api/dash/report/ext/del
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
reportId Option(Number) 报告ID,可以唯一的确定一个报告,如果不提供,需要提供 projectId 和 path
projectId Option(Number) 项目ID,跟 path 一起唯一确定一个报告
path Option(Arr(String)) 从公共文件夹的根目录到报告的路径,最后一项是报告的名称,与projectId共同唯一确定一个报告

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "path":["文件夹1", "报告2"]
}
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "reportId": 123
}

返回

{
    "code": 200
}

修改报告名称接口

修改报告的名称,如果重名会报错。

基本信息:

属性
API /api/dash/report/ext/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
title Option(String) 用户组名称
reportId Option(Int) 报告ID,可以唯一确定给一个报告,如果不提供,需要提供 projectId 和 path
projectId Option(Int) 项目ID,跟path一起可以唯一确定一个报告
path Option(Array(String)) 从公共文件夹的根目录到报告的路径,最后一项是报告的名称,与projectId共同唯一确定一个报告

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "title": "新名称",
  "projectId": 1,
  "path":["文件夹1", "报告2"]
}
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "title": "新名称",
  "reportId": 123
}

返回

{
    "code": 200
}

修改特定报告属性值接口

修改特定报告某个属性的属性值,需要对应报告的编辑权限

基本信息:

属性
API /api/dash/reportAttribute/setValue
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
name String 属性名称
reportId Int 报告ID,可以唯一确定一个报告
projectId Int 项目ID
value Any 属性的值

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "name": "属性a",
    "value": 123,
    "reportId": 7289,
    "projectId": 1
}

返回

{
    "code": 200,
    "result": "ok",
    "logPath": "http://127.0.0.1:8009/operation/log/qvT8poMLnyGQbvUiVn1K9y"
}

获取特定报告属性值接口

获取特定报告某个属性的属性值,需要对应报告的编辑权限

基本信息:

属性
API /api/dash/reportAttribute/getReportAttributeValue
Method GET

请求参数:

字段名称 参数类型 参数说明
token String token
reportId Int 报告ID,可以唯一确定一个报告

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "reportId": 7289,
}

返回

{
    "code": 200,
    "result": [
        {
            "id": 5,
            "name": "日期时间属性",
            "type": "dateTime",
            "value": "2021-09-13T02:21:41.000Z",
            "creatorId": 11111,
            "creatorName": "有小数",
            "modifierId": 11111,
            "modifierName": "有小数",
            "createTime": "2021-08-26 20:12:26",
            "modifyTime": "2021-09-09 15:50:31"
        },
        {
            "id": 4,
            "value": {
                "id": 11114,
                "nick": "郭朝彤gztgzht",
                "uniqueId": "guochaotong@corp.netease.com",
                "email": "guochaotong@corp.netease.com",
                "department": null
            },
            "name": "用户属性",
            "type": "user",
            "creatorId": 11111,
            "creatorName": "有小数",
            "modifierId": 11111,
            "modifierName": "有小数",
            "createTime": "2021-08-26 20:12:26",
            "modifyTime": "2021-09-09 15:50:31"
        },
        {
            "id": 37,
            "value": "2",
            "name": "字符串类型",
            "type": "string",
            "creatorId": 11111,
            "creatorName": "有小数",
            "modifierId": 11111,
            "modifierName": "有小数",
            "createTime": "2021-08-26 20:12:26",
            "modifyTime": "2021-09-09 15:50:31"
        }
    ],
    "logPath": "http://127.0.0.1:8009/operation/log/aEc6GpmpKU7N46V9gyweYj"
}

报告收藏列表接口

获取用户的报告收藏列表

基本信息:

属性
API /api/dash/interest/ext/interestItems
Method GET

请求参数:

字段名称 参数类型 参数说明
token String token
isMobile Boolean 是否是移动端(移动端会过滤空文件夹)
userId Number 用户id
projectId Number 项目id
sort String (Optional) 收藏列表的排序方法

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "isMobile": true,
  "userId": 12333,
  "projectId": 1,
}

返回

{
    "code":200,
    "result":{
        "folders":[
            {
                "id":7571,
                "type":2,
                "category":2,
                "name":"1234",
                "idx":0,
                "projectId":1,
                "parentId":-4,
                "userId":null,
                "creatorId":12375,
                "permissions":[
                    "view",
                    "edit",
                    "add"
                ],
                "folders":[
                    {
                        "id":7572,
                        "type":2,
                        "category":2,
                        "name":"234",
                        "idx":0,
                        "projectId":1,
                        "parentId":7571,
                        "userId":null,
                        "creatorId":12375,
                        "permissions":[
                            "view",
                            "edit",
                            "add"
                        ],
                        "folders":[

                        ],
                        "isFolder":1,
                        "items":[

                        ],
                        "totalView":0
                    }
                ],
                "isFolder":1,
                "items":[

                ],
                "totalView":0
            }
        ],
        "items":[
            {
                "id":9541,
                "title":"jlg权限报告2",
                "category":0,
                "idx":1,
                "userId":12224,
                "folderId":-4,
                "totalView":107,
                "insightReportId":null,
                "modifyTime":"2021-09-16T07:51:33.000Z",
                "createTime":"2021-09-14T02:34:27.000Z",
                "creatorId":12224,
                "modifierId":12224,
                "mirrorReportId":null,
                "isMajor":null,
                "interestId":1430,
                "permissions":[
                    "view",
                    "edit",
                    "copy",
                    "export",
                    "share",
                    "mail",
                    "warning",
                    "add"
                ]
            }
        ],
        "globalPermissions":[
            "view",
            "edit",
            "add"
        ]
    },
}

报告收藏状态接口

获取报告是否被某个用户收藏,返回收藏状态和收藏的文件夹路径。

基本信息:

属性
API /api/dash/interest/status
Method GET

请求参数:

字段名称 参数类型 参数说明
token String token
reportId Number 报告id
userId Number 用户id

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "userId": 12333,
  "reportId": 239,
}

返回

{
    "code": 200,
    "result": {
      "interested": true,
      "path": ["收藏", "子文件夹"]
    }
}

报告收藏接口

用户收藏某个报告

基本信息:

属性
API /interest/ext/add
Method GET

请求参数:

字段名称 参数类型 参数说明
token String token
reportId Number 报告id
userId Number 用户id
folderId Number(Optional) 文件夹 id,如果不传则默认为收藏的根文件夹

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "userId": 12333,
  "reportId": 239,
  "folderId": 123
}

返回

{
    "code": 200,
    "result": {
      "interestId": 1
    }
}

报告取消收藏接口

用户取消收藏某个报告

基本信息:

属性
API /interest/ext/del
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
reportId Number 报告id
userId Number 用户id

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "userId": 12333,
  "reportId": 239,
}

返回

{
    "code": 200
}

报告维度权限用户统计接口

获取拥有对应报告的权限的用户账号列表。

基本信息:

属性
API /report/ext/getUsersWithPermission
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
reportIds Array 报告id数组
projectId Number 项目id

样例输入

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "reportIds": [1234, 1235],
  "projectId": 63000
}

返回

{
    "code": 200,
    "result": {
        "1234": [
            {
                "user": {
                    "uniqueId": "youdata@corp.netease.com",
                    "nick": "有小数",
                    "id": 354
                },
                "permissions": [
                    "view",
                    "edit",
                    "copy",
                    "export",
                    "share",
                    "mail",
                    "warning",
                    "add"
                ]
            }
        ],
        "1235": [
            {
                "user": {
                    "uniqueId": "youdata1@corp.netease.com",
                    "nick": "有小数1",
                    "id": 355
                },
                "permissions": [
                    "view",
                    "edit",
                    "copy"
                ]
            }
        ]
    }
}

根据模型创建报告(有基础组件)

根据模型和字段信息创建基础报告, 需要有项目管理员权限

基本信息:

属性
API /report/addReportBySql
Method POST

请求参数:

字段名称 参数类型 参数说明
dataModelId Number 数据模型ID
fields Array(String) 模型字段列表
folderPath Array(String) 报表所在文件夹路径

调用示例:

{
    "dataModelId": 123,
    "fields": ["name", "age", "gender"],
    "folderPath": ["report", "demo"]                  //  根目录则传空数组 []
}

获取文本组件内容

基本信息:

属性
API /api/dash/component/parseComponentContent
Method POST

请求参数:

字段名称 参数类型 参数说明
componentId String 组件ID
token String 鉴权token

调用示例:

{
    "token":"1731382917727c56e46c6709883d74a76188b",
    "componentId": "exampleComponentId"
}

返回示例:

// 报告编辑的文本:

你好啊 {{{today}}}            // 文本+今天日期: 文本测试:2024-1-11
{{{#全局参数.表名列表}}} // 表名列表: users,books
[查询1[F0]]                      // 字段查询: 正餐、点心餐、早餐

// 接口返回:
{
    "code": 200,
    "result": "文本测试:2024-1-11users,books 正餐、点心餐、早餐 ",
}

根据模型创建报告(空白报告)

根据数据模型ID创建报告,会跳转到报告编辑页面

API /api/dash/report/createFromDataModel
Method GET

请求参数

字段名称 参数类型 参数说明
dataModelId Number 数据模型ID

用户相关

用户批量导入接口

接口说明:

用于将客户的用户列表导入到有数的用户系统里,实现双方部分用户信息的同步,如果导入的用户已在有数系统中,会做更新操作,否则做添加操作

基本信息:

API /api/dash/user/batchImport
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的域管理员
users Array 用户列表
projectId Int(Optional) 默认导入到系统里,如果有projectId,会导入某个项目里
groupIds Array(Optional) 用户组id列表,可选参数,希望将导入的用户放到那些用户组里,(如果需要导入到用户组,projectId为必传项)
defaultPassword String(Optional) 用户默认密码,可选参数,如果不给,则不设置密码,用户无法直接登陆(单点登录不需要传此参数)
roleNames Array(Optional) 将用户绑定到指定一组角色(限定为根目录的一级角色)
rolePaths Array>(Optional) 将用户绑定到指定一组角色, 每一个角色由一个路径的数组表示,数组的最后一个元素是角色名
delRoleNames Array(Optional) 为用户删除一组角色(限定为根目录的一级角色)
delRolePaths Array>(Optional) 为用户删除一组角色, 每一个角色由一个路径的数组表示,数组的最后一个元素是角色名
permissionRoleNames Array(Optional) 将用户绑定到指定的一组数据权限(限定为根目录的行级权限)
permissionRolePaths Array>(Optional) 将用户绑定到指定的一组数据权限, 每一个数据权限由一个路径的数组表示,数组的最后一个元素是数据权限名
delPermissionRoleNames Array(Optional) 为用户删除一组数据权限(限定为根目录的行级权限)
delPermissionRolePaths Array>(Optional) 为用户删除一组数据权限, 每一个数据权限由一个路径的数组表示,数组的最后一个元素是数据权限名
systemRoleIds Array(Optional) 将用户绑定到指定的系统角色,1 表示项目管理员,2表示编辑者,3 表示阅览者
wholeCustomSystemRoleIds Array(Optional) 自定义系统角色ID列表, 每次对于自定义系统角色全量覆盖
domainId Number(Optional) 域ID,企业域用户可指定
domainName String(Optional) 域名,企业域用户可指定

用户对象参数说明:

字段名称 参数类型 参数说明
email String(Optional) 邮箱,有些企业该字段会是唯一
phone String(Optional) 手机号码
uniqueId String 用来判断用户唯一性的字段,可能是email,phone,uid等字段其中之一
password String(Optional) 可以设置或更新用户的登录密码,该配置项的优先级高于defaultPassword(单点登录不需要设置此选项)
nick String(Optional) 用户昵称
department String(Optional) 用户所属部门
company String(Optional) 用户所属公司
position String(Optional) 用户职位
networkConfig Object(Optional) 用户网络配置,是否允许外网访问,只有部署开启网络限制开关,该配置才生效
ifLeave Int(Optional) 用户是否已经离职。1:用户已离职,0:用户未离职
attrs Array(Optional) 用户权限属性值,见修改用户动态值属性接口中的attrs参数定义
customInfo Object(Optional) 用户自定义信息
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "users": [{
        "email": "zhangsan@163.com",
        "phone": 15977765765,
        "uniqueId": "20",
        "nick": "张三",
        "department": "有数",
        "networkConfig": {
            "allowExternal": true
        },
        "ifLeave": 0,
        "attrs": [
            {
                "attrId": 1,
                "attrValue": ["东北","华北"]
            },
            {
                "attrId": 2,
                "attrValue": ["男"]
            },
            {
                "attrId": 5,
                "attrValue": []
            },
            {
                "attrId": 8,
                "attrValue": null
            }
        ]
    }],
    "groupIds": [1,2,3],
    "roleNames": ["角色1", "角色2"],
    "rolePaths":[["smartdata","0"],["smartdata","1"]],
    "permissionRoleNames": ["行级角色1", "行级角色2"],
      "customInfo": "自定义信息" // 也可以传对象 { info: "自定义信息" }
}

成功数据返回:

{
    "code": 200,
    "result": "ok"
}

接口说明

根据有数cookie SESSION_YOUDATA 获取用户等信息

基本信息

API /api/dash/user/getCookieInfo
Method POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权token,必须是超管
cookie String cookie
{
  "cookie": "xxxx"
}

成功数据返回

{
    "code": 200,
    "result": {...},
}

获取用户拥有的项目列表接口

接口说明:

获取用户在有数拥有的项目列表

基本信息:

API /api/dash/project/list
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
domainId Opt(Num) 域ID
{
    token: "1503575355359c4fdea8ec1683ed10edd91ae"
}

成功数据返回:

{
    code: 200,
    result: {
        list: [{
            id: 3,   //项目id
            name: "我的项目",   //项目名称
            description: "我的demo项目" //x项目
        }],
        count: 10
    }
}

删除项目中某个用户的接口

接口说明:

对项目中的某个用户进行删除。不能删除自己。

权限说明:

使用 token 访问,只有项目管理员、域主和域管理员才能调用该接口。

基本信息:

API /api/dash/projectUser/delUsersByUniqueIds
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员、域主或域管理员
projectId Int 需要删除用户的项目 id
uniqueIds Array 需要被删除的用户的 uniqueId,可传多个(与 userIds 二选一)
userIds Array 需要被删除的用户的 userId,可传多个(与 uniqueIds 二选一)

请求参数示例

{
    "token": "1564644553413e707fada60f1c72d500322c9",
    "projectId": 1,
    "uniqueIds": ["admin@corp.netease.com","admin2@corp.netease.com"]
}

返回结果示例:

{
    "code": 200,
    "result": "ok",
    "logPath": "http://127.0.0.1:8009/operation/log/kB8CVXkN2KHLBBh1EJBpcG"
}

获取域中用户列表的接口

接口说明:

获取域中的所有用户,使用 token 访问。

基本信息:

API /api/dash/user/getAllUsers
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token
sort String (Optional) 用户列表的排序方法
offset Int (Optional) 从第几条数据开始返回,适用于分页
limit Int (Optional) 返回数据条数,适用于分页

输入URL示例: https://youdata.163.com/api/dash/user/getAllUsers?token=1564644553413e707fada60f1c72d500322c9

返回结果示例:

{
    "code": 200,
    "result": [
        {
            "id": 1,
            "email": "email1@163.com",
            "nick": "Jack",
            "phone": "13136123456",
            "uniqueId": "email1@163.com",
              "customInfo": "用户自定义信息"
        },
        {
            "id": 2,
            "email": "email2@163.com",
            "nick": "Amy",
            "phone": "13026361234",
            "uniqueId": "email2@163.com",
            "customInfo": "用户自定义信息"
        },
        {
            "id": 3,
            "email": "email3@163.com",
            "nick": "Sam",
            "phone": null,
            "uniqueId": "email3@163.com"
        }
    ],
    "logPath": "http://127.0.0.1:8009/operation/log/kB8CVXkN2KHLBBh1EJBpcG"
}

获取项目中用户列表的接口

接口说明:

获取当前项目的所有用户,使用 token 访问。

基本信息:

API /api/dash/projectUser/list
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token
projectId Int (Optional) 项目Id
offset Int (Optional) 从第几条数据开始返回,适用于分页
limit Int (Optional) 返回数据条数,适用于分页

输入URL示例: https://youdata.163.com/api/dash/projectUser/list?token=1564644553413e707fada60f1c72d500322c9&offset=0&limit=20&projectId=1

返回结果示例:

{
    "code": 200,
    "result": [
        "list": [{
            "id": 90501,
            "userId": 11836,
            "directLeaderId": null,
            "email": "konglei@corp.netease.com",
            "nick": "孔磊",
            "uniqueId": "konglei@corp.netease.com",
            "domainRole": 3,
            "active": 1,
            "category": "editor",
            "isMajor": 0,
            "createTime": "2023-07-06T08:00:42.000Z",
        }],
        "total": 76
    ],
    "logPath": "http://127.0.0.1:8009/operation/log/kB8CVXkN2KHLBBh1EJBpcG"
}

删除域中某个用户的接口

接口说明:

对域中的某个用户进行删除。可同时删除多个用户。域主不能被删除;不能删除自己。

权限说明:

使用 token 访问,只有域主和域管理员才能调用该接口。

基本信息:

API /api/dash/domain/user/delete
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是域主或域管理员
uniqueIds Array 需要被删除的用户的 uniqueId,可传多个
domainId Number(Optional) 域ID,企业域用户可指定
domainName String(Optional) 域名,企业域用户可指定

请求参数示例

{
    "token": "1564644553413e707fada60f1c72d500322c9",
    "uniqueIds": ["user1@corp.netease.com", "user2@corp.netease.com"]
}

返回结果示例:

{
    "code": 200,
    "result": true,
    "logPath": "http://127.0.0.1:8009/operation/log/8nLVCeTeATCk18zq7HhJQS"
}

角色与权限

获取用户角色、行级权限、用户组接口

接口说明: 获取某个用户拥有的角色列表(包括二级角色)、行级权限列表和所在用户组的列表

权限说明: 使用 token 访问,只有项目管理员才能调用该接口。

基本信息:

API /api/dash/user/permissions
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
uniqueId String 用户的 uniqueId
projectId String 项目的 id

返回结果示例:

{
    "code": 200,
    "result": {
        "roles": [ //角色列表
            {
                "id": 1,
                "name": "项目管理员",
                "type": 1,
                "expiredTime": null, //没有有效期
            }
        ],
        "rowPermissions": [ //行级权限列表
            {
                "id": 190,
                "name": "数据行级权限abc",
                "type": 2,
                "expiredTime": "2025-07-24T16:00:00.000Z",
                "dataPermissions": [ //数据权限详情,数据格式可以参照 [关于数据权限传递参数详细说明]
                    {
                        "details": [
                            {
                                "tableAlias": "Sheet1",
                                "tableName": "Sheet1",
                                "selectType": "unselect",
                                "model": "manual",
                                "filterType": "listFilter",
                                "filter": {
                                    "dim": {
                                        "field": "数字",
                                        "dataType": "Whole"
                                    },
                                    "select": [
                                        "1234"
                                    ]
                                }
                            }
                        ],
                        "mode": "fixed",
                        "rule": "or",
                        "type": "row",
                        "resourceId": 700315840,
                        "resourceCategory": 3,
                        "roleId": 26360
                    },
                    {
                        "details": [
                            {
                                "tableAlias": "Sheet1",
                                "tableName": "Sheet1",
                                "type": "dataLevel",
                                "dataMasks": [
                                    {
                                        "field": "数字",
                                        "dataType": "Whole",
                                        "applyRange": [
                                            "view",
                                            "export"
                                        ]
                                    },
                                    {
                                        "field": "文本",
                                        "dataType": "String",
                                        "applyRange": [
                                            "view",
                                            "export"
                                        ]
                                    }
                                ]
                            }
                        ],
                        "mode": "fixed",
                        "rule": "and",
                        "type": "column",
                        "resourceId": 700315840,
                        "resourceCategory": 3,
                        "roleId": 26360
                    },
                    {
                        "details": [
                            {
                                "produced": "Original",
                                "selectType": "select",
                                "select": [
                                    "Sheet1"
                                ],
                                "mode": "manual"
                            }
                        ],
                        "mode": "fixed",
                        "rule": "and",
                        "type": "table",
                        "resourceId": 700315840,
                        "resourceCategory": 3,
                        "roleId": 26360
                    }
                ]
            }
        ],
        "groups": [ //用户组列表
            {
                "id": 50,
                "name": "用户组1"
            },
            {
                "id": 174,
                "name": "用户组123"
            }
        ]
    },
    "logPath": "http://127.0.0.1:8009/operation/log/nuhTNDBGUaEydmwbaHCmD4"
}

获取某项目的角色、行级权限列表的接口

接口说明:

获取项目中的角色列表或行级权限列表。

权限说明:

使用 token 访问,只有超管和在项目中的用户才能调用该接口。

基本信息:

API /api/dash/role/list
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是超管或在项目中的用户
projectId Int 项目 id
type String 'ROLE'为角色;'ROW_PERMISSION'为行级权限
sort String(Optional) 角色列表排序默认为'name:1',按照名字升序排列

输入URL示例: https://youdata.163.com/api/dash/role/list?projectId=1&type=ROLE&token=1564644553413e707fada60f1c72d500322c9

返回结果示例:

{
    "code": 200,
    "result": {
        "folders": [
            {
                "id": 35,
                "type": "ROLE",
                "name": "name1",
                "isFolder": 1,
                "projectId": 1,
                "parentId": 0,
                "modifyTime": "2019-05-08T07:32:35.000Z",
                "items": [
                    {
                        "id": 2682,
                        "projectId": 1,
                        "type": 0,
                        "name": "2",
                        "description": "",
                        "isAdminCreate": true,
                        "creatorName": "Jack",
                        "creatorId": 15,
                        "folderId": 35,
                        "isFolder": 0
                    },
                    {
                        "id": 2720,
                        "projectId": 1,
                        "type": 0,
                        "name": "xxa",
                        "description": "xxxxxx",
                        "isAdminCreate": true,
                        "creatorName": "Amy",
                        "creatorId": 282,
                        "folderId": 35,
                        "isFolder": 0
                    }
                ],
                "folders": []
            },
            {
                "id": 21,
                "type": "ROLE",
                "name": "name2",
                "isFolder": 1,
                "projectId": 1,
                "parentId": 0,
                "modifyTime": "2019-04-28T02:46:23.000Z",
                "items": [],
                "folders": []
            }
        ],
        "items": [
            {
                "id": 2665,
                "projectId": 1,
                "type": 3,
                "name": "1",
                "description": "",
                "isAdminCreate": true,
                "creatorName": "admin",
                "creatorId": 15,
                "folderId": 0,
                "isFolder": 0
            },
            {
                "id": 2570,
                "projectId": 1,
                "type": 0,
                "name": "111",
                "description": "uu",
                "creatorName": "admin",
                "creatorId": 1,
                "folderId": 0,
                "isFolder": 0
            }
        ]
    },
    "logPath": "http://127.0.0.1:8009/operation/log/vGxKzd6w1rX34wHky9i6Zb"
}

同步用户数据权限和资源权限接口

接口说明:

导入一个数据权限或者一个资源权限。根据roleName和type查找是否已经存在同名权限,如果存在就更新这个权限的description,如果不存在就创建一个新的叫这个名字的权限。 然后把 uniqueId 和 uniqueIds 中的用户加到这个project里面来,给这些用户赋予导入的权限;给 groupNames 指代的用户组们也增加这个权限。

异常

  1. 如果根据 projectId 找不到项目,返回“对应的项目不存在”
  2. 如果有用户不存在的,返回“对应的用户不存在”
  3. 如果有用户组不存在的,返回“对应的用户组不存在”

补充解释

  1. 数据权限就是【数据行级权限】,资源权限就是【角色】
  2. 导入数据权限,type为2,如果还要设置数据行级权限,增加 dataPermissions 字段
  3. 导入资源权限,type为:0(一级角色)、3(二级角色),如果还要设置资源权限,增加 resourcePermissions 字段
  4. type 和 path 是必传的, resourcePermissions(dataPermissions)是可选的
  5. 如果指定了dataPermissions或者resourcePermissions时,该接口导入前会将该角色所有的权限包括资源权限和数据权限都删掉,然后导入新的用户指定的权限

基本信息:

API /api/dash/role/importDataPermissions
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,只有项目管理员可以访问该接口
uniqueId String(Optional) 导入的角色需要关联的用户账号
uniqueIds Array(Optional) 导入的角色需要关联的用户账号列表
userExpireMap Object(optional) 关联的用户的有消息,{[用户uniqueId]: 过期时间}
projectId Int 项目id, 要导入到哪个项目里
roleName String 要创建的角色的名称,必须传
path Array(String) 创建的角色的文件夹路径,最多支持一层文件夹,如["aaa"],表示把角色创建子aaa文件夹下(如果文件夹不存在则自动创建),如要在根目录下创建角色,则传空数组。 亦支持指定文件夹下的数据权限设置
description String(Optional) 可选参数,用于角色描述
groupNames Array(Optional) 导入的角色需要关联的用户组名称列表
groupExpireMap Object(optional) 关联的用户组的有效期,{[用户组名称]: 过期时间}
orgCodes Array(Optional) 需要关联的组织架构编码列表
orgExpireMap Object(optional) 关联的组织架构有效期 {[组织机构编码]: 过期时间}
dataPermissions Array(Optional) 数据权限列表
resourcePermissions Array(Optional) 资源相关的资源权限列表
importResourceTypes Array(Optional) 导入角色的时候,可以指定导入哪几种资源权限,被指定的资源类型的权限会被情况然后添加。如果不传这个参数,那么角色的所有权限都会被清空。resourcePermissions 参数中涉及到的资源种类,必须被importResourceTypes包含,否则会报错“导入的权限超出 importResourceTypes 指定的范围 "
type Int 0 一级角色,3 代表二级角色,2 代表行级权限
ignoreInvalidUser bool 如果用户不存在于有数,是否忽略; 默认为false, 不忽略,会报错

dataPermissions的数据格式如下(参考上文中的关于数据权限传递参数详细说明):

字段名称 参数类型 参数说明
dataConnectionId Int 数据连接id
details Array 该数据连接下的数据权限列表
mode String 固定值为 "fixed" , 动态值为 "dynamic"
type String 行权限 "row", 列权限 "column", 表权限 "table", 不传默认为 "row

修改资源权限:

{
  "uniqueId": "xiaozhupeiqi@corp.netease.com",
  "uniqueIds": ["xiaozhupeiqi2@corp.netease.com"],
  "userExpireMap": {
    "xiaozhupeiqi@corp.netease.com": "2027-10-10 10:00:00"
  },
  "groupNames": ["5月10号用户组"],
  "groupExpireMap": {
    "5月10号用户组": "2027-10-10 10:00:00"
  },
  "orgCodes": ["rC57m4iRY5e3"],
  "orgExpireMap": {
    "rC57m4iRY5e3": "2027-10-10 10:00:00"
  },
  "projectId": 63666,
  "path":[],
  "roleName": "5月10号角色",
  "description": "5月10号角色",
  "type": 0,
  "importResourceTypes": ["DATA_CONNECTION", "NEW_REPORT"],
  "resourcePermissions": [ // <== 资源权限专用!!
      {
      "resourceId": 2010,
      "resourceNamePaths": ["lidasong", "3.9"],  //这个字段与resouceId,可以二选一,表示lidasong文件下的名称为3.9的数据连接
      "resourceType": "DATA_CONNECTION",
      //resourceType为[NEW_REPORT,DATA_MODEL,DATA_CONNECTION,SCREEN]资源对应的资源权限为['view', 'edit', 'export', 'copy']
      //resourceType为[ADD_DATA_CONNECTION,ADD_DATA_MODEL,ADD_NEW_REPORT,ADD_SCREEN]对应的资源权限为['add', 'noPrivateAdd']
      //DATA_CONNECTION的资源权限还有自定义SQL: "customSql"
      "permissions": [
        "view",
        "edit"
      ],
      "isFolder": 0, //是文件夹还是普通资源,默认为0
      },
      {
      "resourceNamePaths": [ //根目录下一共报告名字叫"lly"
        "lly"
      ],
      "resourceType": "NEW_REPORT",
      "isFolder": 1,
      "permissions": [
        "view",
        "edit"
      ]
    }
  ]
}

修改数据权限:

{
  "uniqueId": "xiaozhupeiqi@corp.netease.com",
  "uniqueIds": ["xiaozhupeiqi2@corp.netease.com"],
  "userExpireMap": {
    "xiaozhupeiqi@corp.netease.com": "2027-10-10 10:00:00"
  },
  "groupNames": ["5月10号用户组"],
  "groupExpireMap": {
    "5月10号用户组": "2027-10-10 10:00:00"
  },
  "orgCodes": ["rC57m4iRY5e3"],
  "orgExpireMap": {
    "rC57m4iRY5e3": "2027-10-10 10:00:00"
  },
  "projectId": 63666,
  "roleName": "5月10号行级权限",
  "description": "5月10号行级权限",
  "type": 2,
  "dataPermissions": [
    {
      "mode": "dynamic",
      "dataConnectionId": 2010,
      "details": [
        {
          "database": "dev_netease", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
          "tableName": "工作表1",
          "selectType": "select",
          "model": "list",
          "filterType": "listFilter",
          "filter": {
            "dim": {
              "field": "本科毕业学校",
              "dataType": "String"
            },
            "attrId": 3
          }
        }
      ]
    },
    {
      "mode": "fixed",
      "dataConnectionId": 2010,
      "details": [
        // listFilter 的例子,行权限
        {
          "type": "row",
          "filterType": "listFilter",
          "selectType": "select",
          "tableName": "订单总表",
          "filter": {
            "dim": {
              "field": "地区",
              "dataType": "String"
            },
            "select": [
              "东北",
              "华北"
            ]
          }
        },
        // treeFilter 的例子,行权限
        {
          "type": "row",
          "filterType": "treeFilter",
          "selectType": "select",
          "tableName": "订单总表",
          "filter": {
            "or": [
              {
                "dims": [
                  {
                    "field": "地区",
                    "dataType": "String"
                  },
                  {
                    "field": "省/自治区",
                    "dataType": "String"
                  }
                ],
                "cond": {
                  "inlist": [
                    [
                      "东北",
                      "黑龙江"
                    ],
                    [
                      "华北",
                      "河北"
                    ]
                  ]
                }
              }
            ]
          }
        },
        // "自定义SQL例子",行权限
        {
          "type": "row",
          "filterType": "treeFilter",
          "selectType": "select",
          "tableExprId": 3,
          "tableName": "自定义sql的名字",
          //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
          "filter": {
            "or": [
              {
                "dims": [
                  {
                    "field": "地区",
                    "dataType": "String"
                  },
                  {
                    "field": "省/自治区",
                    "dataType": "String"
                  }
                ],
                "cond": {
                  "inlist": [
                    [
                      "东北",
                      "黑龙江"
                    ],
                    [
                      "华北",
                      "河北"
                    ]
                  ]
                }
              }
            ]
          }
        },
        //导入列权限
        {
          "dataConnectionId": 700310177,
          "details": [
           {
            "type": "dataLevel", //隐藏列
            "tableName": "sheet1", //表名
            "dataMasks": [
                {
                    "field": "地区", //字段名
                    "dataType": "String",
                    "applyRange": [ //应用范围:导出 + 查看
                        "view",
                        "export"
                    ]
                }
            ]
          }
          ],
          "type": "column"
      },
      { //表权限
          "dataConnectionId": 700310177,
          "details": [
            {
              "database": "test", //库名
              "databaseAlisa": "test", //库名的别名
              "produced": "Original",
              "selectType": "unselect", //unselect:禁止查看,select:仅可见
              "select": ["table_name"], //可见|不可见的表名
              "mode": "manual",
            }
          ]
      }
      ]
    }
  ]
}

成功数据返回:

{
    code: 200,
    result: 1        // 角色ID
}

全量同步某个资源粒度的用户权限

API /api/dash/directResourcePerm/syncMembers
Method POST

请求参数

字段名称 参数类型 参数说明
token String token
projectId Number 项目ID
resourceName String 数据模型(DATA_MODEL), 数据连接(DATA_CONNECTION),报告(NEW_REPORT)
resourceId Number 资源ID
memberInfos Arr 成员信息
autoAddProjectUser Bool 默认为true, 如果用户不在项目,是否自动加入项目
wholeCoverMembers Bool 默认为false,是否清空当前资源下所有用户权限,用memberInfos全量覆盖

memberInfos 结构: 如果用户不在系统里, 将忽略这条数据

[{
    type: String,   // 用户账号类型: 'uniqueId' 'user'
    id: String      // 用户账号
    // 查看(view), 复制数据(copyData), 导出(export),编辑(edit),
    // 分享(share), 推送(mail), 预警(warning), 无权限仍可见(showSummaryWithoutPerm)
    permissions: []
}]

输入示例:

{
    "projectId": 505,
    "resourceId": 144861,
    "resourceName": "DATA_MODEL"
    "memberInfos": [{
        "type": "uniqueId",
        "id": "xxxx@163.com",
        "permissions": ["view","copyData","export"]
    }]
}

删除用户在项目里拥有的角色接口

接口说明:

(outdated:只能删除根目录下的一级角色或权限)

该接口用于删除多个用户在某个项目里的角色(用户需为项目管理员),这个接口并不是删除项目中的角色本身,而是解绑用户与角色的关系。如果roleNames和permissionRoleNames, systemRoleIds 只要指定了其中一个或者两个,三个,表示解绑指定角色,否则是解绑该项目下用户拥有的所有角色(不包含该用户所在用户组的角色)

基本信息:

API /api/dash/user/delRoles
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
uniqueIds Array(String) 需要解绑的角色的用户列表
projectId Int 项目id,必填
roleNames Array(String)(Optional) 解绑用户指定的角色的名称列表(若不指定 path,则默认为根目录),与 permissionRoleNames 二者必填其一
systemRoleIds Array(Int)(Optional) 要解绑的系统角色, 1 表示项目管理员,2 表示编辑者,3 表示预览者
permissionRoleNames Array(String)(Optional) 解绑用户指定的行级权限根目录的权限,与 roleNames 二者必填其一
path Option(Array(String)) 如果指定 path,则指的是该路径下的角色或数据权限,否则指根目录下的角色或数据权限,path 目前最多只支持一层

输入示例

{
   "token":"172061XXXXXXXXb97454038683f97cb6",
   "uniqueIds": ["wanlibing@admin.com"],
   "projectId": 427,
   "roleNames":["文件角色123"],
   "path": ["文件夹1"]
}

成功数据返回:

{
    "code": 200,
    "result": {
        "fieldCount": 0,
        "affectedRows": 1,
        "insertId": 0,
        "serverStatus": 2,
        "warningCount": 0,
        "message": "",
        "protocol41": true,
        "changedRows": 0
    },
    "logPath": "http://127.0.0.1:8009/operation/log/uuKdr9vtYBfYf4z2CrGPMT"
}

删除角色

基本信息:

属性
API /api/dash/role/ext/delete
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
roleId Option(Int) 角色的ID,roleId 可以唯一确定一个用户组,如果不提供 roleId,则需要同时提供 projectId 和 path
projectId Option(Int) 项目ID,跟path 同时存在,projectId 和 path 可以唯一确定一个角色
path Option(Array(String)) 用户组的路径,其最后一项是角色的名称,跟 project 同时存在,projectId 和 path 可以唯一确定一个角色

输入示例

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "roleId": 123,
}
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "path": ["文件夹1","角色1"]
}

返回

{
    "code": 200
}

修改用户动态值属性接口

接口说明

修改用户动态值属性的值。

基本信息

API /api/dash/userAttr/update
Method POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的域管理员
uniqueId String uniqueId
userId Int 用户ID
attrs Array 用户权限属性值

uniqueIduserId二选一,优先匹配uniqueId,若都不填会报错

用户权限属性值 attrs参数说明:

字段名称 参数类型 参数说明
attrId Int 属性id
attrName String 属性名称。(与attrId任选其一即可)
attrValue Array(或null) 属性值

属性id (attrId):如果用户只有 attrId 为1、3、5的属性,那么只需要在接口中设置这几个属性的值即可,没有被设置的属性可以理解为 attrValue 为null,可以传也可以不传。如果用户已有该attrId的属性值,则会被新值覆盖。 属性名称 (attrName):属性列表中的属性名。设置方法同上。 属性值 (attrValue):正常情况下是一个字符串数组。 如果要清除用户的对应 attrId 的属性,attrValue 应设置为 null,这表示该用户没有被这个属性限制权限。如果 attrValue 的值为 [],说明用户完全没有该属性所关联的列的查看权限。

注意:调用 用户批量导入接口 设置用户属性与调用本接口设置用户属性效果是一样的,这两个接口的接口参数中的attrs 的处理方式是相同的。所以,如果只想导入用户属性,也可以调用本接口(/api/dash/userAttr/update)。

{
  "userId":141,//  "uniqueId": "abc@163.com"
  "attrs" : [
    {
      "attrId":1,
      "attrValue":["武汉大学","黄冈师范学院"]
    },
    {
      "attrId":3,
      "attrValue":[]
    },
    {
      "attrId":5,
      "attrValue":null
    }
  ]
}

成功数据返回

{
    "code": 200,
    "result": "ok",
}

添加用户组

基本信息:

属性
API /api/dash/group/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
projectId Number 项目ID
title String 用户组名称
description String 用户组的描述
roleIds Option(Array(Int)) 用户组拥有的角色ID列表
path Option(Array(String)) 用户组的路径,跟folderId 二选一,只支持一层文件夹,没有文件夹就填空数组
category String 写死为editor
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "title": "用户组1",
  "category": "editor",
  "description": "用户组1的描述",
  "path":["文件夹1"]
}

返回

{
    "code": 200,
    "result": 123 // 新增的用户组的ID
}

修改用户组名称

基本信息:

属性
API /api/dash/group/ext/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String Token
title Option(String) 用户组名称
description Option(String) 用户组的描述
id Option(Int) 用户组ID,可以唯一确定给一个用户组,如果不提供,需要提供 projectId 和 path
projectId Option(Int) 项目ID,跟path一起可以唯一确定一个用户组
path Option(Array(String)) 用户组的路径,至少有一个元素,数组最后一个元素是用户组的名称,跟projectId一起可以唯一确定一个用户组
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "title": "用户组1",
  "description": "用户组1的描述",
  "path":["文件夹1", "用户组2"]
}
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "id": 300,
  "title": "用户组1",
  "description": "用户组1的描述"
}

返回

{
    "code": 200
}

删除用户组

基本信息:

属性
API /api/dash/group/dels
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
projectId Number 项目ID
path Array(String) 跟 ids 二选一,path 的最后一项是用户组的名称,根据 path 删除用户组
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "path":["文件夹1", "用户组A"]
}

返回

{
    "code": 200
}

删除用户组的成员

基本信息:

属性
API /api/dash/group/ext/delUsers
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
groupId Option(Int) 用户组的ID,groupId 可以唯一确定一个用户组,如果不提供 groupId,则需要同时提供 projectId 和 path
projectId Option(Int) 项目ID,跟path 同时存在,projectId 和 path 可以唯一确定一个用户组
path Option(Array(String)) 用户组的路径,其最后一项是用户组的名称,跟 project 同时存在,projectId 和 path 可以唯一确定一个用户组
uniqueIds Option(Array(String)) 账号列表,跟 erase 二选一,选择清空用户组下面的哪些成员。
erase Option(Bool) 是否清空这个用户组的所有成员。

输入示例

// 清空ID123的用户组的所有成员
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "groupId": 123,
  "erase": true,
}
// 移除用户组的部分成员
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1,
  "path": ["文件夹1","用户组B"],
  "uniqueIds": ["aaa@163.com", "bbb@126.com"],
}

返回

{
    "code": 200
}

系统自定义角色的创建

基本信息

属性
API /api/dash/systemRole/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
name String 系统自定义角色的名称
description Optional(String) 系统自定义角色的描述

输入示例:

{
    token: "xxx",
    name: "系统管理员",                 // 系统自定义角色的名称
    description: "拥有系统管理权限"      // 系统自定义角色的描述
}

输出示例:

{
    result: 1,                        // 系统自定义角色ID
}

系统自定义角色的修改

基本信息

属性
API /api/dash/systemRole/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
id Int 系统自定义角色ID
name Optional(String) 系统自定义角色的名称
description Optional(String) 系统自定义角色的描述

输入示例:

{
    token: "xxx",
    id: 123,                          // 系统自定义角色ID
    name: "系统管理员",                 // 系统自定义角色的名称
    description: "拥有系统管理权限"      // 系统自定义角色的描述
}

系统自定义角色的删除

基本信息

属性
API /api/dash/systemRole/dels
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token
ids Arr(Int) 系统自定义角色ID列表

系统自定义角色的列表

基本信息

属性
API /api/dash/systemRole/list
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token

输出示例:

[{
    name: 'xxx',             // 系统角色名称
    id: 1,                   // 系统角色ID
    domainId: 1              // ID
    description: "xxx"       // 描述
}]

创建角色文件夹

基本信息

属性
API /api/dash/role/folder/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String token

输入示例:

{
    "token": "1715153331570ccd827064c458a2e6ec2a3fe",
    "projectId": 64233,
    "parentId": 0,                 // 上级文件夹, 0表示根目录
    "managementType": 4,           // 4表示数据权限, 3表示角色
    "name": "测试数据权限文件夹"      // 文件夹名称
}

输出示例:

// 正常情况
{
    id: Int,        // 文件夹 ID
}
// 异常情况: 已存在同名目录
{
    titleRepeat: true,
    newTitle: String
}

项目相关

新增项目

接口说明:

新建一个项目,必须指定至少一个项目成员

基本信息:

API /api/dash/project/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,必须是超管
name String 项目名称
description Option(String) 项目描述
receiverList Arr(Object) 成员列表,要填写用户的uniqueId,具体看例子
domainId Option(Number) 域ID,企业域用户可指定
domainName Option(String) 域名,企业域用户可指定

输入样例:

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "name": "项目A",
  "description": "描述",
  "receiverList": [
    {
      "type": "user",
        "name": "xxx1@xxx.com"// uniqueId
    },
    {
      "type": "user",
        "name": "xxx2@xxx.com" // uniqueId
    }
  ]
}

成功数据返回:

{
    "code": 200,
    "logPath": "http://127.0.0.1:8009/operation/log/fNy78UctuDQ3geEsBJAm6m"
}

修改项目名称

接口说明:

修改项目信息

基本信息:

API /api/dash/project/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,必须是超管
name Optional(String) 项目名称
Id Number 项目ID
description Optional(String) 项目描述

输入样例:

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "id": 1,
  "name": "新项目A",
  "description": "新描述"
}

成功数据返回:

{
    "code": 200,
    "logPath": "http://127.0.0.1:8009/operation/log/fNy78UctuDQ3geEsBJAm6m"
}

删除项目

接口说明:

删除项目。

基本信息:

API /api/dash/project/del
Method DELETE

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,必须是超管
projectId Number 项目ID

输入样例:

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 1
}

成功数据返回:

{
    "code": 200,
    "logPath": "http://127.0.0.1:8009/operation/log/fNy78UctuDQ3geEsBJAm6m"
}

组织架构相关

组织架构同步

接口说明:

注意事项:

  • 如果部门已经被删除了,被删除了的部门的修改,不要放到 updatedOrgs 发给有数,但可以放到 deletedOrgs 发过来重复删除
  • 部门负责人列表,目前只取第一个负责人,最好第一个元素是部门的主要负责人
  • 如果部门或子部门下还有直属员工,或者部门下还有子部门,均无法删除部门
  • 2023年1月10日 update:
    • deletedOrgCodes 中的部门,如果不传 forceDeleteOrg: false ,会递归的删除该部门下的所有部门,并冻结所有人员。
    • deletedOrgCodes 被删除的部门的应用项目,如果在 updatedOrgs 中有同样的 orgCode,会在添加的时候被恢复

基本信息:

API /api/dash/orgStructure/syncOrg
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,必须是超管
companyName Optional(String) 公司名,如果传了会更改公司名
updatedOrgs Array 见输入样例
forceDeleteOrg Optional(Boolean) 是否强制删除部门,默认为 true,如果不设置为 false,会递归的删除该部门下的所有部门,并冻结所有人员
deletedOrgCodes Array(String) 需要删除的部门的编码,可以重复删除,如果不删除可以传一个空数组

输入样例:

{
    "companyName": "xxx公司", // 可选字段,如果传了会更改公司名
    "updatedOrgs": [{ // 新增或更新的部门
        "orgCode": "xxx", // 部门编码,要保证全局唯一
        "name": "部门名称",
        "parentOrgCode": "上级部门编码", // 可选,如果不传,说明是一级部门
        "orgAdminUniqueIds": ["account1", "account2"], // 部门负责人列表,目前只取第一个负责人
        "description": "部门描述"
    }],
    "forceDeleteOrg": false,  // 是否强制删除部门
    "deletedOrgCodes": ["code1", "code2", "code3"] // 必传,需要删除的部门的编码,可以重复删除,如果不删除可以传一个空数组
}

人员和组织的关系同步

接口说明:

使用对外接口文档中的/api/dash/user/batchImport接口 ,在导入用户的过程中,把组织关系也同步过来。

该接口的 users 字段新增 userOrgs 字段,表示用户当前直属于哪些部门,以及在这些部门里的角色

注意:

  1. 第一次调用 [(部门A, leader)] ,会把这个用户加入部门A,且作为负责人

    第二次调用 [(部门A, normal)],这个用户仍然在A,但不是负责人了

  2. 第一次调用 userOrgs 说这个用户在A部门

    第二次调用 userOrgs 说这个用户在B,C部门

    第三次调用 userOrgs 说这个用户在 E,F,G 部门

    最终这个用户在 EFG 部门

基本信息:

API /api/dash/user/batchImport
Method POST

输入样例:

{
    "token": "167817564178376dcd64c0bebedc9b161bb8a",
    "users": [{
        "uniqueId": "wanglibing6@admin.com",
        "userOrgs": [{
            "orgCode": "4BnnSF6KcKnY",
            "orgRole": "normal"
        }],
    }],
    "returnOrgFailedUsers": true //如果有用户的 org 没同步成功,返回报错信息
}

返回样例:

{
    "code": 200,
    "result": [ // 如果设置了 returnOrgFailedUsers
      {
        "uniqueId": "maomao",
        "message": "code1 dosen't exist!"
      }
    ]
}

门户相关

修改用户的门户总地址访问的门户

接口说明:

修改用户的门户总地址访问的门户

基本信息:

API /api/dash/portal/updateMainPortal
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,必须是超管
customUrl String 门户的url
uniqueIds Arr(String) 用户的账户列表

成功数据返回:

{
    "code": 200,
    "logPath": "http://127.0.0.1:8009/operation/log/fNy78UctuDQ3geEsBJAm6m"
}

获取用户的门户总地址

接口说明:

获取设置了门户总地址的用户的门户总地址,如果用户没有设置过门户总地址,那么该用户不会在返回结果之中。

基本信息:

API /api/dash/portal/listUserMainPortal
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,必须是超管
uniqueIds Optional(Arr) 用户uniqueId数组,如果不提供,会返回所有用户的门户总地址

成功数据返回:

{
code: 200,
result: [
    {
        id: 11966,
        nick: "郭郭郭",
        email: "407121202@qq.com",
        uniqueId: "407121202@qq.com",
        favoritePortalId: 527,
        url: "204_526"
    },
    {
        id: 1,
        nick: "admin",
        email: "admin@admin.com",
        uniqueId: "admin@admin.com",
        favoritePortalId: 334,
        url: "门户已被删除"
    }
],
logPath: "http://127.0.0.1:8009/operation/log/aznj54X2xvAeyiZMdzaC3B"
}

导出与推送相关

导出图片和pdf接口

接口说明:

用于将图表导出为图片,这里需要注意的,导出接口用户在页面上临时的选择,无法实现导出

基本信息:

API /api/dash/report/exportCapture
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
exportType String(Optional) 导出图片类型,"picture"为导出图片,"pdf"为导出PDF,默认是导出图片
reportId Int 需要导出的报告id
type String type="report",表示是导出报告,type="dashboard",表示导出报告页,type="component",表示导出图表组件
componentId String(Optional) 组件id,如果type="component",必传
dashboardId Int(Optional) 页面id,如果type="component"或"dashboard",必传
title String(Optional) 导出文件名称
defaultFilters filters(Optional) 筛选器,支持列表筛选器和静态类型日期筛选器
tempQueryId String (Optional) 临时筛选ID,如果客户在报告做了一些临时筛选等操作,可以通过在集成iframe 的postMessage的方式拿到这个ID,就可以导出筛选后的数据, postMessage具体格式参考前端开放API能力|
emptyCheck Boolean(Optional) 是否检查数据为空

列表筛选器的配置格式为:

{
  "列表筛选器控件id":{
    selected: Array,
    exclude: Boolean
  }
}

静态日期筛选器的配置格式为;

{
  "日期筛选器控件id":{
    type: "StaticTime",
    minBound: timeString,
      maxBound: timeString
  }
}

接口输入参数示例:

{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "exportType": "picture",   //png格式
    "reportId": 1,
    "type": "dashboard",
    "dashboardId": 23330,
    "title": "API导出",
    "tempQueryId": "export_2ff50084b2e9ac865f3779c6ecd7c4d6",
    "defaultFilters": {
        "c-bQo8b75xnJqmhvnJpYNXtW": {
            "selected": [
                "2020",
                "2021",
                "2022",
                "2023"
            ],
            "exclude": false
        }
    }
}

成功数据返回:

{
    "code": 200,
    "result": {
        "link": "...",  // 下载地址
        "emptyData": true   // 当设置了emptyCheck时,返回截图数据是否为空,且当数据为空时不返回下载地址
    }
}

导出excel接口

接口说明:

用于将图表数据导出为excel,这里需要注意的,导出接口用户在页面上临时的选择,无法实现导出

基本信息:

API /api/dash/report/exportExcel
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
reportId Int 报告id
type String type="report",表示是导出报告,type="dashboard",表示导出报告页,type="component",表示导出图表组件
componentId String(Optional) 组件id,如果type="component",必传
exportType String(Optional) 非必填,'csv', 'xlsx', 'crossTable',三者选其一,不传值默认是xlsx
dashboardId Number (Optional) 页面id,如果type="dashboard",必传
enhance Bool(Optional) 是否导出带样式,true-带样式,false-不带样式,默认true
conditionFormat Bool(Optional) 是否导出条件格式,enhance为true时生效。true-导出条件格式。false不导出,默认false
useOriginData Bool(Optional) 是否导出数据格式及日期格式,true-使用原始数据,false-导出数据格式及日期格式,默认false
includeTitle Bool (Optional) 是否导出图表标题,true-导出,false-不导出, 默认false
rowsLimit Number(Optional) 导出行数。导出类型为xlsx时,可以使用此字段。默认为设置的默认导出行数限制
title String(Optional) | 导出文件名称 |
defaultFilters filters(Optional) 筛选器,与导出图片和pdf接口中的defaultFilters字段格式一致
excelSplitLimit Number (Optional) 当导出单个图表组件时,可以使用此参数配置条数拆分导出成多个Excel导出 |
tempQueryId String (Optional) 临时筛选ID,如果客户在报告做了一些临时筛选等操作,可以通过在集成iframe 的postMessage的方式拿到这个ID,就可以导出筛选后的数据, postMessage具体格式参考前端开放API能力|
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "exportType": "xlsx",
    "reportId": 14986,
    "type": "dashboard",
    "dashboardId": 23330,
    "useOriginData": false,
    "includeTitle": true,
    "title": "API导出excel",
    "tempQueryId": "export_2ff50084b2e9ac865f3779c6ecd7c4d6",
    "defaultFilters": {
        "c-bQo8b75xnJqmhvnJpYNXtW": {
            "selected": [
                "2020",
                "2021",
                "2022",
                "2023"
            ],
            "exclude": false
        },
        "c-gJLpNWPGADEg1Gx5zZBGHk": {
            "type": "StaticTime",
            "minBound": "2022-02-02 00:00:00",
            "maxBound": "2023-03-12 24:00:00"
        }
    }

}

成功数据返回:

{
    "code": 200,
    "result": {
        "link": "...",   // 下载地址
        "taskId": 5362,   // 导入任务id
        "sheetInfos": [     // sheet信息
            {
                "dataLine": 54,
                "fieldNames": [   // 字段名列表
                    "地区",
                    "类别",
                    "细分",
                    "折扣"
                ]
            }
        ],
        "exportFileName": "未命名报告-折扣(按细分、地区、类别划分)_20241104:49",    // 导出文件名
        "emptyData": false    // 只要存在一个导出组件的数据为空,该字段就返回true
    }
}

导出填报模版接口

接口说明:

根据填报ID导出填报模版。

基本信息:

API /api/dash/survey/exportTemplate
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
surveyId Number 填报ID
defaultFilters filters(Optional) | 筛选器,支持列表筛选器和日期筛选器

defaultFilters列表筛选器格式与导出图片和pdf接口的列表筛选器一致,获取筛选器控件id方式如下:

访问指定填报页面(dash/survey/1/?surveyId=123456),打开开发者工具,执行 window.__FRANKY_APP_PROXY_WINDOW__._gcGlobal.activeElement.filterDataModel,即可获取筛选器信息列表

日期筛选器支持多种类型: 静态日期筛选器

{
  "日期筛选器控件id":{
    "$type": "DateTimeFilter",
    "period": {
        "minBound": timeString,
        "maxBound": timeString
    },
    "mode": {
        "$type": "StaticTime"
    }
  }
}

相对日期筛选器

通过anchor字段和count字段表示[currentTime-anchor-count+1, currentTime-anchor]的一段时间,时间单位unit支持day(天)、week(周)、month(周)、quarter(季度)、halfYear(半年)、year(年)

{
  "日期筛选器控件id":{
    "$type": "DateTimeFilter",
    "mode": {
      "$type": "RelativeTime",
      "count": 7, 偏移量
      "unit": "day", // 时间单位
      "anchor": 0 // 偏移起始位置
    }
  }
}

某日期前的所有时间

  "日期筛选器控件id":{
    "$type": "DateTimeFilter",
    "period": {
      "maxBound": timeString
    },
    "mode": {
      "$type": "RelativeTime"
    }
  }
}

某日期后的所有时间

  "日期筛选器控件id":{
    "$type": "DateTimeFilter",
    "period": {
      "minBound": timeString
    },
    "mode": {
      "$type": "RelativeTime"
    }
  }
}

示例数据:

{
  "token": "1675218670096b19ede50c8a59111b9da2fbe",
  "surveyId": 4267,
  "defaultFilters": {
        "jdcZ1DipogvNWVaTjRQovi": {
            "selected": [
                "东北",
                "华北",
                "西南"
            ],
            "exclude": false
        },
        "vB3Z7F42UyNLPvpdJ7eGc6": {
            "$type": "DateTimeFilter",
            "period": {
                "minBound": "2023-02-01 00:00:00",
                "maxBound": "2023-03-16 24:00:00"
            },
            "mode": {
                "$type": "StaticTime"
            }
         }
    }
}

返回结果:

{
    "code": 200,
    "result": "http://nos.netease.com/youdata-test/exportSurveyTemplate-development-4267-12692-vNmQyWnS.xlsx?Expires=1677738614&NOSAccessKeyId=f3318b2c1f67409386bb99813a44c778&Signature=a4pRSGEUldkg2Giz0hkDrYAMOfMza1ic4qqBa9p%2FGUE%3D&download=exportSurveyTemplate-development-4267-12692-vNmQyWnS.xlsx",
    "apiCost": 29041,
    "logPath": "http://127.0.0.1:8009/operation/log/jAnUcBvkVok8jaKaztpaqv"
}

立即发送推送接口

接口说明:

立即发送指定项目指定报告的邮件或webhook。

基本信息:

API /api/dash/regularMail/send
Method POST

该接口有两种参数传递方式

参数传递方式一

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的超管
mail mail 邮件信息

mail字段:

字段名称 参数类型 参数说明
cache String (Optional) 默认为'1'使用缓存,'0'为不使用缓存
resourceId Int 报告id
projectId Int 项目id
title String 邮件标题
receiverList ReceiverList 接收者列表,可以是用户,角色,用户组
tag String(Optional) 邮件签名
sendFailMailRemark Int 0失败不通知;1失败立即通知;2失败重试(至多3次)后通知
id Int(Optional) 有数系统中推送的id
dataPermission Int(Optional) 默认为0不区分权限,1为区分权限
enableEmail Int 是否发送邮件
enableWebhook Int 是否发送webhook
webhookList Array(Int)(Optional) 当enableWebhook为1时,该项必填。数组中的内容是在有数系统中配置的webhook的id
image Int(Optional) 1带图片(默认),0带数据表格,2不带图片和数据表格
sendFailMailRemark Int(Optional) 0失败不通知,1失败立即通知,2失败重试后通知
attachment String 携带附件的类型,nothing-不携带附件,excel, pdf, png
dashboardIds Array(Int)(Optional) 推送范围。当该字段不为null时,推送相应报告页,数组内容是报告页的id
widgets Array(widget)(Optional) 推送范围。当该字段不为null时,推送相应组件,数组内容见下面 widgets字段 表

widgets字段: | 字段名称 | 参数类型 | 参数说明 | |-----------------|--------------|----------------------| | dashId | Int | 页面id | | selectIds | Array(String)| 当前页面被选中的组件id |

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "mail": {
    "resourceId": 40,
    "projectId": 13,
    "title": "title",
    "receiverList": [
      {
        "id": 122, // 用户id
        "type": "user"
      },
      {
        "id": 1, // 角色id
        "type": "role"
      },
      {
        "id": 1, // 用户组id
        "type": "group"
      },
      {
        "name": "hzlisi@163.com", // 用户的uniqueId
        "type": "user"
      },
      {
        "name": "角色名称", // 默认角色不支持,只能用id发送(项目管理员1,编辑者2,预览者3),角色idname二选一即可
        "type": "role"
      },
      {
        "name": "用户组名称", // 用户组名称
        "type": "group"
      }
    ],
    "cache": 1,
    "tag": "qianming",
    "id" : 2045,
    "dataPermission": 0,
    "enableEmail": 1,
    "enableWebhook": 1,
    "webhookList": [1],
    "image":1,
    "widgets": {"dashId": "140360", "selectIds": ["c-1-130781-140360-keavmgax"]}
  }
}
参数传递方式二

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的超管
batchMails Array(Object) 邮件信息

batchMails 字段:

字段名称 参数类型 参数说明
id INT 系统中定时推送或者立即推送的id
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "batchMails": [{
    "id": 40
  },
  {
    "id": 41
  }]
}

推送暂停/启用接口

接口说明:

暂停/启用定时推送。

基本信息:

API /api/dash/regularMail/pause
Method POST
参数传递方式一

暂停/启动指定的推送。

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
ids Array(Number) 推送ID数组
mode String pause-暂停推送,restore-重新启用推送
{
  "token": "1675218670096b19ede50c8a59111b9da2fa',
  "ids": [76995, 76994],
  "mode": "pause"
}
参数传递方式二

暂停/启用项目下指定类型的所有推送。

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,须是项目管理员
projectId Number 项目ID
type Number 推送类型,1-报告推送,4-取数导出,5-复杂报表推送
mode String pause-暂停推送,restore-重新启用推送
{
  "token": "1675218670096b19ede50c8a59111b9da2fa',
  "projectId": 64456,
  "type": 1
  "mode": "pause"
}

根据数据模型ID进行公共查询导出csv接口

接口说明:

根据数据模型 id 找到定时导出取数的记录。立即导出 csv 并发送到 webhook

基本信息:

API /api/dash/easyFetch/exportExcelByDataModelId
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是在projectId对应的项目中
dataModelId Number 数据模型id
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "dataModelId": 123
}

成功数据返回:

{
    "code": 200,
    "logPath": "http://127.0.0.1:8009/operation/log/h9UxwUqT6AR9vKCPUQF86u"
}

大数据量导出接口

接口说明:

对指定报告的组件进行大数据量导出任务的创建

基本信息:

API /api/dash/report/asyncExportExcel
Method POST

请求参数:

字段名称 参数类型 参数说明
reportId Int 报告id
componentId String 组件id
exportType Optional(String) 导出结果类型,值为csv或xlsx,默认为csv
excelSplitLimit Optional(Int) 导出数据行数,默认为1000000
{
    "reportId": 468,
    "componentId": "c-1-468-977-lysaita6",
    "exportType": "csv",
    "excelSplitLimit": 1000000
}

成功数据返回:

{
    "code": 200,
    "result": 46742   // 返回导出任务id,可以通过「获取导出状态接口」轮询导出状态
}

导出任务列表接口

接口说明:

获取导出任务列表

基本信息:

API /api/dash/exportExcelTask/list
Method POST

请求参数:

字段名称 参数类型 参数说明
type String 导出类型,见「type枚举」
projectId Int 项目id
status Optional(Array(String)) 导出状态的列表,见「status枚举」
offset Optional(Int) 返回结果偏移量
limit Optional(Int) 返回结果数量限制
keyword Optional(String) 关键词
startTime Optional(String) 开始时间
endTime Optional(String) 结束时间
exportType Optional(String) 导出结果类型,见「exportType枚举」

type枚举:

report 报告
component 组件
tab 页面
easyFetch 取数
easyFetchWebhook 取数Webhook
allEasyFetch 所有取数相关
survey 填报
elecTable 电子表格

status枚举:

success 成功
waiting 排队中
waitingData 查询数据中
pending 数据传输中
generating 文件生成中
uploading 文件上传中
fail 失败
expired 已过期
approving 审批中
approvePass 审批通过
approveReject 审批拒绝

exportType枚举:

excel 导出为excel
csv 导出为csv
crossTable 导出为交叉表
{
    "type": "report",
    "projectId": 1,
    "status": "success",
    "offset": "0",
    "limit": "1",
    "keyword": "test",
    "startTime": "2024-06-18 00:00:00",
    "endTime": "2024-07-18 00:00:00",
    "exportType": "excel"
}

成功数据返回:

{
    "code": 200,
    "result": {
        "count": 307,   // 总任务数量
        "list": [       // 任务列表
            {
                "id": 52464,                              // 任务id
                "type": "dashboard",                      // 导出类型(report: 报告, dashboard: 页面, component: 组件)
                "reportId": 21263,                        // 报告id
                "reportName": "report1",                  // 报告名称
                "dashboardId": 31112,                     // 页面id
                "subName": "dashboard1",                  // 页面名称
                "componentId": null,                      // 组件id
                "componentName": "component1",            // 组件名称
                "componentType": "table",                 // 组件类型(table: 表格, auto: 图表, indicator: 指标卡)
                "exportWay": "sync",                      // 导出方式(sync: 普通导出, asyc: 大数据量导出)
                "status": "expired",                      // 任务状态(见输入参数的「status枚举」)
                "createTime": "2024-06-26T02:07:45.000Z", // 创建时间
                "modifyTime": "2024-06-29T16:00:25.000Z", // 修改时间
            }
        ]
    }
}

获取导出状态接口

接口说明:

根据导出任务的id来获取导出任务状态

基本信息:

API /api/dash/exportExcelTask/get
Method GET

请求参数:

字段名称 参数类型 参数说明
id Int 导出任务id
{
    "id": 46742
}

成功数据返回:

{
    "code": 200,
    "result": {
        "id": 46742,                              // 任务id
        "type": "dashboard",                      // 导出类型(report: 报告, dashboard: 页面, component: 组件)
        "reportId": 21263,                        // 报告id
        "reportName": "report1",                  // 报告名称
        "dashboardId": 31112,                     // 页面id
        "subName": "dashboard1",                  // 页面名称
        "componentId": null,                      // 组件id
        "componentName": "component1",            // 组件名称
        "componentType": "table",                 // 组件类型(table: 表格, auto: 图表, indicator: 指标卡)
        "exportWay": "sync",                      // 导出方式(sync: 普通导出, asyc: 大数据量导出)
        "status": "expired",                      // 任务状态(见导出任务列表接口的「status枚举」)
        "createTime": "2024-06-26T02:07:45.000Z", // 创建时间
        "modifyTime": "2024-06-29T16:00:25.000Z", // 修改时间
    }
}

抽取相关

根据报告id获取抽取列表接口

接口说明:

获取抽取管理的列表,只会返回具有预览权限的数据连接对应的抽取列表

基本信息:

API /api/dash/tableExtract/getListByReportId
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须具有reportId对应的报告的预览权限
reportId Number 报告id
extractStatus Optional(String) 抽取状态,'success'-成功/'fail'-失败/'pending'-抽取中。当传递该参数时会筛选出对应抽取状态的抽取列表
offset Optional(Number) 偏移量,要跟limit一起传。不分页时请固定传0
limit Optional(Number) 返回的列表长度,要跟offset一起传。不分页时请传一个足够大的数字
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "reportId": 123,
    "extractStatus": "success",
    "offset": 0,
    "limit": 200
}

成功数据返回:

{
    "code": 200,
    "result": {
        "count": 110, // 筛选后所有数据条数的总和,不等于list的数组长度,list的数组长度跟limit值有关
        "list": [
            {
                "id": 1517,  // 抽取列表的记录id
                "tableName": "退货", // 表名
                "dataConnectionName": "超市大(1)(1)", // 数据连接名称
                "status": "whole", // 抽取类型,'whole'-增量/'increment'-全量
                "extractStatus": "success", // 抽取状态,'success'-成功/'fail'-失败/'pending'-抽取中
                "extractTime": "2020-08-25T11:51:56.000Z",  // 抽取时间
                "usedMemory": 786432,  // 占用空间,单位是字节
                "successRate": 1, // 成功率
                "priority": 0,  // 优先级,1-最高/2-次高/3-中等/4-次低/5-最低
                "tableExtractLogId": 339832, // 抽取记录id
                "tableExprId": 123, // 自定义表 id
                "disable": 0, // 是否被禁用
                "message": null, // 失败原因
                "database": "test", // 数据库名
                "creatorName": "张三" // 创建人姓名
            }
        ],
        "overview": {
            "count": 110,
            "successCount": 100, // 抽取成功的总数
            "pendingCount": 5, // 抽取中的总数
            "failCount": 5, // 抽取失败的总数
            "disableCount": 6 // 被禁用的总数
        }
    },
    "logPath": "http://127.0.0.1:8009/operation/log/h9UxwUqT6AR9vKCPUQF86u"
}

单表预处理立即抽取接口

接口说明:

如果用户在数据链接做过单表抽取设置后,可以调用该接口执行立即抽取任务

基本信息:

API /api/dash/tableCron/run
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
tableExtractId Int 数据抽取Id
{
    token: "1503575355359c4fdea8ec1683ed10edd91ae",
    tableExtractId: 10    //抽取任务id
}

成功数据返回:

{ code: 200 }

修改抽取表外部依赖数据更新时间接口

接口说明:

用于更新某张抽取表的外部依赖数据库中数据的更新时间,若获取的数据更新的时间大于上次抽取时间,则自动执行抽取。 此步骤需要在抽取设置中,开启“仅当检测到以下表数据更新后才抽取”。开启后,抽取原有的定时任务失效。

权限说明

此接口需要项目管理员权限

基本信息:

API /api/dash/tableExtract/relyUpdatedTime
Method POST

请求参数:

字段名称 参数类型 参数说明
dataConnectionId Number 数据连接 id
database(可选) String 数据库名称
tableName String 表名
relyUpdatedTime Date 外部依赖数据更新的时间(例如 2018-09-17 13:00:00)
token String 生成的用户鉴权 token

注:

1. dataConnectionId 数据连接 id 可以在数据连接页面中获取或调用获取数据连接 id 接口获取

2. database 数据库名称可以在数据连接页面中找到对应的表的数据库

参数调用例子:

{
    "dataConnectionId": 700309163,
    "database": "public",
    "tableName": "mock_table_1",
    "relyUpdatedTime": "2018-10-10 10:24:00",
    "token": "15391392723407ae9f048c818fe0d04a6c08f"
}

成功数据返回:

成功会返回 success 字符串

{
    code: 200,
    result: 'success'
}

获取设置过原始抽取依赖表列表对外接口

接口说明: 新建一个数据模型,只支持新建单表的数据模型

API /api/dash/tableExtract/getRelyTables
Method GET
字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
projectId Int 项目ID

返回结果示例:

{
    "code": 200,
    "result": [
      {
        database: "haitao_analy",
        tableName: "act_age_cut_180_1227",
        dataConnectionId: 2275
      },
      {
        database: "haitao_analy",
        tableName: "lbf_app_bu_ipv_1d",
        dataConnectionId: 2275
      },
      {
        database: "haitao_analy",
        tableName: "adp_kl_new_usr_type_info_detail",
        dataConnectionId: 2222
      },
      {
        database: "haitao_dev_log",
        tableName: "dwd_kl_flw_miniapp_ext_di",
        dataConnectionId: 2222
      }
    ]
}

添加自定义SQL

接口说明

用于创建某个数据连接下的自定义SQL

基本信息

名称 参数
API /api/dash/customTable/add
请求方法 POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权token
dataConnectionId Number 数据连接ID
tableName String 自定义表名
query String 自定义SQL查询语句
produced String 表类型, UserDefinedSQL
relyList Optional\ 依赖的表名称数组
initSql Optional\ 初始化SQL
folderId Number 自定义SQL分类ID,0-未分类 |
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "dataConnectionId":70001,
  "tableName":"hello",
  "query":"select * from hello",
  "produced":"UserDefinedSQL",
  "relyList":[]
}

成功返回

{
  "dataConnectionId": 70001,                    // 数据连接ID
  "tableName": "hello",                                // 自定义表名
  "query": "SELECT * from hello",          // 查询语句
  "produced": "UserDefinedSQL",
  "relyList": [],                                            // 依赖数组
  "creatorId": 1,                                            // 创建人ID
  "modifierId": 1,                                        // 修改人ID
  "tableExprId": 1                                        // 该自定义表的唯一标示
}

更新自定义SQL

接口说明

用于更新某个数据连接下的自定义SQL

基本信息

API /api/dash/customTable/update
Method POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权token
id Number 新增返回的tableExprId
dataConnectionId Number 数据连接ID
tableName String 自定义表名
query String 自定义SQL查询语句
initSql Optional 初始化SQL

删除自定义SQL

接口说明

用于删除某个数据连接下的自定义SQL

基本信息

历史接口为 DELETE /api/dash/customTable, 支持但是不建议使用

名称 参数
API /api/dash/customTable/delete
请求方法 POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权token
id Number 自定义SQL ID
{
      "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "id": 4041,
}

成功返回

{
      "code": 200
}

给某个自定义SQL新建抽取

接口说明

对于某个自定义SQL表,进行初始化建立抽取表,并执行抽取

基本信息

名称 参数
API /api/dash/tableCron/add
请求方法 SOCKET

请求参数

字段名称 参数类型 参数说明
token String 鉴权token
projectId Number 项目ID
dataConnectionId Number 数据连接ID
database Optional\ 数据库名
tableName Optional\ 表名
tableExprId Optional\ 自定义SQL表ID
status String 抽取方式; 全量: whole; 增量: increment
setting Setting 抽取方式配置, 具体参数见Setting对象
partitionConfig Optional\ 抽取分区配置, 具体参数见PartitionConfig对象
engineType Optional\ 抽取引擎类型, 普通抽取: 0; 高性能抽取: 1
engineConfig Optional\ 抽取引擎配置, 包含分片字段
relyStatus Optional\ 是否开启外部依赖检查, 0: 否; 1: 是
relyMode Optional\ 依赖模式, or, and
rerunStatus Optional\ 是否开启自动失败重跑
rerunSetting Optional\ 重跑配置, 具体参数见RerunSetting对象

对象 PartitionConfig 结构如下:

{
        storage,                                 // String, 行存储(row), 列存储(col)
        partitionField,                    // Optional<String>, 分区字段
        partitionSetting {            // 分区配置
      startTime                            // Optional<String> 开始时间
          endTime                                // Optional<String> 结束时间
          minPeriod                            // Optional<Number> 最小范围
          maxPeriod                            // Optional<String> 最大范围
          interval                            // Number 间隔
          unit                                    // 单元, day, week, month, year
          defaultPartition            // Bool
          dataType                            // String, 'Whole', 'Decimal', 'DateTime', 'String', 'Date', 'Time', 'Boolean'
    }
}

对象RerunSetting结构如下:

{
    retryTime,                                // Number, 重跑次数
  gap                                                // Number, 时间间隔
}

对象 Setting 结构如下:

// statuswhole
{
    appendData,                    // Optional<Bool> 是否追加, 默认值为false
}
// statusincrement
{
  extractField {            // 依据该字段进行增量抽取
      field,                        // String, 字段名
      dataType,                    // String, 字段类型
      scroll,                        // Optional<Bool>, 是否滚动覆盖, 默认值为false
      mode                          // 分区周期
    }
}

示例: 给某个自定义SQL新建抽取表, 并执行抽取

{
  "status": "whole",
  "setting": { "appendData": false },
  "projectId": 1,
  "dataConnectionId": 70001,
  "relyStatus": 0,
  "relyMode": "and",
  "rerunStatus": 0,
  "executeExtract": 1,
  "tableExtractCrons": [],
  "tableExprId": 1,
  "engineType": 0,
}

成功返回

{
    "code": 200,
    "result": {
        "dataConnectionId": 70001,
        "tableExprId": 1,
        "setting": {                                        // 抽取方式设置
            "appendData": false
        },
        "tableExtractId": 2501,                    // 抽取表的唯一标示
        "status": "whole"                                // 抽取方式
    },
}

数据源与数据模型

上传KEYTAB文件

接口说明:

辅助数据连接的创建和更新

基本信息

API /api/dash/dataConnection/keytab
Method POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权token
projectId Number 项目 ID
type String 文件类型, 不传默认keytab。这里可以不传
file File keytab 文件

输出示例

{
    "fileName": "mammut_qa.keytab",
    "fileKey": 1181
}

获取数据连接列表接口

接口说明:

根据数据连接名称获取数据连接信息,主要用于获取数据连接id

基本信息:

API /api/dash/dataConnections
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token
projectId Number 项目id
keyword String 格式为:name:数据连接名称, 如搜索超市数据连接,应该输入 name:超市

成功数据返回:

返回的是根据keyword进行模糊搜索的列表,可能有多个,需要调用者自己去从list中查找

{
    code: 200, //错误返回非200
    result: {
        total: Number,
        list: [{
            name: String,
            id: Number,
        }]
    }
}

添加数据连接接口

接口说明: 添加数据连接到指定项目

权限说明: 使用 token 访问,只有项目管理员才能调用该接口。

基本信息:

API /api/dash/dataConnection/apiAdd
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
name String 数据连接名称
folderId Optional(Number) 文件夹ID, 可以不传默认为0表示根目录
paths Optional(Arr) 文件夹路径,可以不传
projectId Number 项目Id
type Number 数据链接类型
server Optional(Str) 服务器
port Optional(Num) 端口
userName Optional(Str) 用户名
password Optional(Str) 密码
parameters Optional(Obj) 附加参数
namespace Optional(Arr) 命名空间
readOnly Number 是否只读。1-只读,0-非只读。默认为0
skipTest Optional(Bool) 是否绕过连接验证。false-不绕过,true-绕过。默认为false

parameters 结构: 不同的数据源传的结构不一样, 见后面的示例

{
    ....
    customData: {           // 开启指标类型自定义元信息, 目前仅猛犸指标中台需要用
       enable: true,
       type: 'indicator'
    },
    jdbcUrlProps: Opt(Str)  // jdbc附加参数
    driver: Opt(Str)        // 驱动: "driver":"mysql-connector-5.1.49"
}

输入参数举例

MySQL: 认证方式为用户名密码(Mysql)

{
    "name": "测试MySQL",
    "projectId": 156,
    "type": 0,
    "paths": ["abc"],
    "server":"10.172.11.225",
    "port":"3306",
    "userName":"youdata",
    "password":"youdata",
    "defaultSchemaName": "BLD", // 默认database,可以不传
  "token": "1636597037183050570b9a6d51def260eea18"
}

Oracle:

{
    "name": "测试Oracle",
    "projectId": 156,
    "type": 1,
    "paths": ["abc"],
    "server":"10.172.11.234",
    "port":"1521",
    "userName":"youdata",
    "password":"youdata",
    "parameters": {
        "SID": "XE"
    },
  "token": "1636597037183050570b9a6d51def260eea18"
}

SQL Server:

{
    "name": "测试SQL Server",
    "projectId": 156,
    "type": 12,
    "paths": ["abc"],
    "server":"223.252.222.21",
    "port":"1433",
    "userName":"youdata",
    "password":"youdata",
    "namespace": ["test"], // 数据库
  "token": "1636597037183050570b9a6d51def260eea18"
}

Custom API:

{
    "name": "测试 Custom API",
    "projectId": 156,
    "type": 24,
    "paths": ["abc"],
    "server":"url", // url地址
    "userName":"youdata",
    "password":"youdata",
    "parameters": {
        "customParameters": {
            // 查询参数配置
        }
    },
  "token": "1636597037183050570b9a6d51def260eea18"
}

Postgresql (PG)

{
    "name": "测试pg",
    "projectId": 542,
    "type": 21,
    "paths": ["abc"],
    "server":"10.196.80.249",
    "port":"6432",
    "userName":"youdata_test",
    "password":"youdata",
    "namespace": ["youdata"],            // 必传
  "token": "1636597037183050570b9a6d51def260eea18"
}

达梦

{
    "name": "测试达梦",
    "projectId": 542,
    "type": 122,
    "paths": ["abc"],
    "server":"10.200.129.52",
    "port":"5236",
    "userName":"youdata",
    "password":"youdata",
  "token": "1636597037183050570b9a6d51def260eea18"
}

IMPALA: 认证方式为kerberos

首先需要调接口上传keytab文件, 然后再调用新建数据连接接口

{
    "name": "测试",
    "type": 11,
    "projectId": 64464,
    "server": "hadoop334.xxx",
    "parameters": {
        "authType": "kerberos",
        "connMode": "zookeeper",
        "queryQueueSetting": {
            "totalQueueLength": 40,
            "highQueueLength": 1
        },
        "driver": "hive-2.1.1",
        "cPrincipal": "intern/bigdata@TEST.HZ.NETEASE.COM",
        "principal": "impala/_HOST@TEST.HZ.NETEASE.COM",
        "namespace": "impala-ha-new/impala-hiveserver2",
        "keytab": {
            "fileName": "intern.keytab",
            "fileKey": 282
        }
    },
    "folderId": 0,
    "token": "1705659185955e2ffa2749101bd929184a10f"
}

返回结果示例:

{
    "code": 200,
    "result": {
        "server": "10.172.43.225",
        "port": 3306,
        "userName": "youdata",
        "password": null,
        "parameters": {},
        "name": "测试数据链接名称",
        "defaultSchemaName": "BLD",
        "type": 0,
        "modifiedId": 1,
        "available": 1,
        "dataConnectionInfo": {
            "version": "5.5.52-0+deb7u1"
        },
        "projectId": 156,
        "id": 3108,// 数据连接id
        "showname": "MySQL",
        "typeName": "mysql",
        "creatorName": "admin"
    },
    "logPath": "http://127.0.0.1:8009/operation/log/ut3j63gG1ga77PgQdCZN8C"
}

通过API修改数据连接接口

权限说明: 使用 token 访问, 数据连接编辑权限

基本信息:

API /api/dash/dataConnection/apiUpdate
Method POST

请求参数: 同添加数据连接接口,增加一个 id 字段(数据连接 id)

修改数据连接接口

接口说明: 修改数据连接

权限说明: 使用 token 访问,只有项目管理员才能调用该接口。

基本信息:

API /api/dash/dataConnection/update
Method POST

请求参数:

同添加数据连接接口,增加一个 id 字段(数据连接 id)

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
id Number
name String 数据连接名称
projectId Number 项目Id
type Number 数据链接类型
readOnly Number 是否只读。1-只读,0-非只读。默认为0
skipTest Bool(Optional) 是否绕过连接验证。false-不绕过,true-绕过。默认为false

输入参数举例

MySQL:

{
  "id": 700313268,
    "name": "测试MySQL",
    "projectId": 156,
    "type": 0,
    "server":"10.172.11.225",
    "port":"3306",
    "userName":"youdata",
    "password":"youdata",
    "defaultSchemaName": "BLD", // 默认database,可以不传
  "token": "1636597037183050570b9a6d51def260eea18"
}

返回结果示例:

同添加数据连接接口。

删除数据连接接口

接口说明: 删除数据连接

权限说明: 使用 token 访问,需要编辑数据连接的权限

基本信息:

API /api/dash/dataConnection/apiDelete
Method POST

请求参数:

同添加数据连接接口,增加一个 id 字段(数据连接 id)

字段名称 参数类型 参数说明
token String 鉴权 token
id Number

输入参数举例

{
  "id": 700313268,
  "token": "163659837245744b4c8966533e163039e1fbd"
}

返回结果示例:

{
    "code": 200,
    "logPath": "/operation/log/nu1UZmGWsfzzt6Dywfo6vX"
}

新建单表数据模型接口

接口说明: 新建一个数据模型,只支持新建单表的数据模型

API /api/dash/dataModel/addWithTable
Method POST

请求参数: 自定义表和原始表二选一,文件夹路径和文件夹ID也是二选一

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
name String 要新建的数据模型名称
paths Opt(Array(String)) 在哪个文件夹路径下新建数据模型
folderId Opt(Num) 在哪个文件夹下新建数据模型
dataConnectionId Int 数据连接 ID,表示基于那个数据数据连接建立数据模型
database Opt(String) 根据数据连接类型不同决定是否可选,表示单表属于哪个 database
tableName Opt(String) 要根据那个表建立数据模型
tableExprId Opt(Int) 自定义SQL的ID

原始表输入用例

{
  "folderId": 1,                        // 文件夹ID
  "dataConnectionId": 700310511,
  "database": "dev_netease",
  "tableName": "bigviz_user",
  "name": "test1"
}

自定义输入用例

{
  "paths": ["api-test"],                        // pathsfolderId选填其中一个就可以, 都表示文件夹
  "dataConnectionId": 700310511,
  "tableExprId": 30,                                // 自定义SQL ID
  "name": "test1"
}

返回结果示例:

{
    "code": 200,
    "result": 20 //新建数据模型的 ID
}

新建空数据模型接口

接口说明 根据文件夹路径和数据连接Id新建一个空的数据模型

API /api/dash/dataModel/addEmptyModel
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
folderPath Option(Array(String)) 在哪个文件夹路径下新建数据模型
dataConnectionId Int 数据连接 ID,表示基于那个数据数据连接建立数据模型
projectId Int 项目id
name String 模型名称

输入用例

{
  "token": "171706912121966f879edbd3e721c888472f0",
  "folderPath": ["文件夹1", "文件夹2"], //文件夹路径:/文件夹1/文件夹2
  "dataConnectionId": 700310511,
  "projectId": 1,
  "name": "test1"
}

返回结果示例:

{
    "code": 200,
    "result": 20 //新建数据模型的 ID
}

模型重命名接口

接口说明 重命名模型,如果传入的模型名称和当前目录的模型名称重复了,会返回重复信息。

API /api/dash/dataModel/ext/renameDataModel
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
id Int 模型id
name String 新的模型名称

输入用例

{
  "token": "171706912121966f879edbd3e721c888472f0",
  "id": 1,
  "name": "test1"
}

更新成功返回结果示例:

{
    "code": 200,
}

名称重复返回结果示例:

{
  "code": 200,
  "result": {
      "titleRepeat": true, //是否重复:是
      "newName": "填报(1)" //不重复的新名称,可以直接使用newName作为更新名称进行重试。
  }
}

删除数据模型接口

API /api/dash/dataModel/del
Method POST

请求参数

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
id Number 数据模型ID

返回示例:

// 删除成功
{
    code: 200
}
// 存在依赖
{
    code: 735,
    message: "数据模型存在依赖,不能删除",
}

获取数据模型列表

接口说明:

超级管理员可以获取所有模型列表,普通用户仅能获取有阅览权限的模型

API /api/dash/dataModel/ext/getList
Method GET

请求参数

字段名称 参数类型 参数说明
token String 鉴权 token
projectId Number 项目ID
sort OPT(String) 热门排序: "pv:2", 不排序则不需要传

输出示例:

{
    code: 200,
    result: [{
        "id": 25153,                            // 模型ID
        "name": "测试",                                // 模型名称
        "projectId": 505,                        // 项目ID
        "folderId": 0,                            // 文件夹ID
        "creatorId": 12234,                        // 创建人ID
        "creator": "xxxxxx",                    // 创建人名称
        "createTime": "2024-03-19 16:44:42",    // 创建时间
        "modifierId": 12234,                    // 修改人ID
        "modifier": "xxxxxx",                    // 修改人名称
        "modifyTime": "2024-03-19 17:05:37",    // 修改时间
        "pv": 22,                                // 访问量
        "paths": ['hello', 'sub'],                // 文件夹路径
    }]
}

获取数据模型详情

接口说明:

获取模型详细信息g

API /api/dash/dataModel/get
Method GET

请求参数

字段名称 参数类型 参数说明
token String 鉴权 token
id Number 模型ID

输出示例:

{
    code: 200,
    result: {
        "id": 3,                                      // 模型ID
        "name": "测试",                                // 模型名称
        "projectId": 505,                        // 项目ID
        "folderId": 0,                            // 文件夹ID
        "enableChatBi": true,       // 是否开启了 chatBIfalse  null 均为没开启
        "creatorId": 12234,                        // 创建人ID
        "creator": "xxxxxx",                    // 创建人名称
        "createTime": "2024-03-19 16:44:42",    // 创建时间
        "modifierId": 12234,                    // 修改人ID
        "modifier": "xxxxxx",                    // 修改人名称
        "modifyTime": "2024-03-19 17:05:37",    // 修改时间
    }
}

获取模型的依赖

API /api/dash/dataModel/relyCheck
Method GET

请求参数

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
id Number 数据模型ID

输出示例

{
    code: 200,
    result: {
        rely: true          // 是否存在依赖
        relyList: [{        // 依赖的资源列表
            newReportDataModels,
            ...
        }]
    }
}

获取模型相关资源依赖的指标信息

接口说明

获取某个模型的下游依赖的所有报告、每个报告下的图表、每个图表依赖的指标等信息

API /api/dash/dataModel/getDependence
Method POST

请求参数

字段名称 参数类型 参数说明
token String token
dataModelId Number 数据模型ID

输出示例

{
    pgId,            // 项目组ID
    source           // 猛犸集群
    projectId,       // 项目ID
    domainName       // 域名
    dataModel: {     // 当前模型信息
        id,          // 模型ID
        status,      // 模型状态: 直连(direct), 抽取(extrac)
        tables: [{   // 模型用到的表
            dataConnectionId
            database
            tableName
            tableExprId
        }]
    },
    reports: [{
        id,            // 报告ID
        publishStatus: Int,        // 0(已发布的编辑态), 1(发布态), 2(未发布的编辑态)
        publishRelatedId: Int,     // 发布和编辑的ID映射, 报告ID
        version: String,           // 当前报告版本, 如果发布态和编辑态版本号一致则说明已经发布成最新状态
        name,          // 报告名称
        creator: {     // 创建人
            id: xx,
            uniqueId: xx,
            nick: xx
        }
        modifier: {}   // 修改人
        components: [{
            id,                // 组件ID
            name,              // 组件名称
            fields: [{
                field           // 字段名称
                indicatorName   // 指标名称
                dataConnectionId // 数据连接ID
                tableExprId,     // 自定义
                database         // 数据库名
                tableName        // 表名
            }],
        }],
    }]
    dataConnections: [{    // 用到的数据连接的基本信息
        id,
        type
        host,
        ...
        mammutCatalog
    }]
}

同步模型元信息

接口说明:

当数据库中表的元信息发生修改时,可将修改同步至所有相关报告

API /api/dash/wideTable/synchRelatedMetas
Method POST

请求参数

字段名称 参数类型 参数说明
token String token
dataModelId Number 数据模型ID

表数据更新通知接口

接口说明: 如果某个表数据更新,通过该接口告知有数后,可以触发依赖该表的邮件的推送、依赖该表的抽取的自动抽取、依赖该表的报告自动刷新缓存。前提是需要在产品上开启相关依赖配置。

API /api/dash/util/pushTableByMammut
Method POST
字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
type String 'TABLE'
dataConnectionId Int 数据连接 ID
dbName String 根据数据连接类型不同决定是否可选,表示单表属于哪个 database
tblName String 对应的表名

输入用例

{
  "token": "ssjdjsjsjkdjklsdjkl",
  "dataConnectionId": 700310511,
  "dbName": "dev_netease",
  "tblName": "bigviz_user"
}

返回结果示例:

{
    "code": 200,
    "result": {

    }
}

表元数据更新通知接口

接口说明: 如果某个表数据或者表元信息更新,通过该接口告知有数后,可以触发依赖该表的邮件的推送、依赖该表的抽取的自动抽取、依赖该表的报告自动刷新缓存、模型元信息刷新等。

API /api/dash/tableRely/pushTable
Method POST
字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是项目管理员
dataConnectionId Int 数据连接 ID
database String 根据数据连接类型不同决定是否可选,表示单表属于哪个 database
tableName String 对应的表名
relyEvents Array 要触发的事件,数组,支持多个事件,'dataModelMetaUpdate' 更新模型元信息,'tableExtract' 触发抽取, 'tableExtractReInit' 触发抽取重新建表并抽取, 'resourceCache' 触发缓存, 'easyFetchExport' 触发取数依赖导出, 'mailSend' 触发邮件依赖推送

输入用例

{
  "token": "ssjdjsjsjkdjklsdjkl",
  "dataConnectionId": 700310511,
  "database": "dev_netease",
  "tableName": "bigviz_user",
  "relyEvents": ["dataModelMetaUpdate", "tableExtract"]
}

返回结果示例:

{
    "code": 200,
    "result": {

    }
}

获取标签列表

接口说明:

可以获取项目下的所有标签

API /api/dash/tag/all
Method GET

请求参数

字段名称 参数类型 参数说明
projectId Number 项目ID
keyword OPT(String) 搜索关键词
token String 鉴权token

输入示例

{
    "projectId":2,
    "keyword":"name:测试标签",
    "token":"17316620001929261c1b5db26b87c5e150e38"
}

输出示例:

{
    code: 200,
    result: [{
        "id": 25153,                            // 标签ID
        "name": "测试标签",               // 标签名称
        "bindModelNum": 3,                // 标签绑定的数据模型数量
        "bindModels": [           // 标签绑定的数据模型列表
          {
            "id": 1,              // 模型id
            "name": "模型1"        // 模型名称
          },
          {
            "id": 2,
            "name": "模型2"
          },
          {
            "id": 3,
            "name": "模型3"
          }
        ]
    }]
}

chatbi集成标签列表示例:

https://demo.youdata.com/dash/chatbi?token=173217423373754e658ce7aaeb7b7d42d16ec&tagId=24(标签id)

企业域相关

企业域-新增域

接口说明:

新增一个域和域主,并创建默认项目,返回域id和默认项目id。

基本信息:

API /api/dash/privateSaas/domain/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的超管
domainName String 域名
domainAdmin User 域主对象
edition String 版本
accountNumber Number 账号数
mppSpaceLimit Number 抽取总容量
buyingMinutes Number 增量购买分钟数
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "domainName": "demo1",
  "domainAdmin": {
     "email": "zhangsan@163.com",
     "phone": 15977765765,
     "uniqueId": "20",
     "nick": "张三",
     "department": "有数"
  },
  "edition": "ultimate",
  "accountNumber": 30,
  "mppSpaceLimit": 300,
  "buyingMinutes": 10
}

成功数据返回:

{
    "code": 200,
    "result": {
      "domainId": 12,
      "projectId": 27
    }
}

企业域-删除域

接口说明:

给定域id,删除域。域内的所有用户和项目以及资源都会被删除。

基本信息:

API /api/dash/domain/del
Method DELETE

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的超管
domainId Number 域id
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "domainId": 12
}

成功数据返回:

{
    "code": 200
}

企业域-修改域信息

接口说明:

修改域的相关信息

基本信息:

API /api/dash/privateSaas/domain/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的超管
domainId Number 域id
edition String 版本
accountNumber Number 账号数
mppSpaceLimit Number mpp容量
buyingMinutes Number 购买分钟数
{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "domainId": 12,
  "edition": "trial",
  "accountNumber": 20,
  "mppSpaceLimit": 100,
  "buyingMinutes": 10
}

成功数据返回:

{
    "code": 200,
    "result": {
        "id": 12,
        "edition": "trial",
        "accountNumber": 20,
        "mppSpaceLimit": 100,
        "expireTime": 1592554271476
    }
}

企业域-获取域的使用情况

接口说明:

获取域列表

基本信息:

API /api/dash/privateSaas/domain/get
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的超管
domainId Optional(Number) 域ID

成功数据返回:

{
    "code": 200,
    "result": {
        "id": 12,
        "edition": "trial",
        "accountNumber": 20,
        "mppSpaceLimit": 100,
        "expireTime": 1592554271476
    }
}

企业域-删除用户接口

接口说明:

将用户从域中删除

基本信息:

API /api/dash/privateSaas/domain/delUsers
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的域管理员
uniqueIds Arr 账号列表
domainId Number 域Id
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "uniqueIds": ["admin", "123"],
    "domainId": 12
}

成功数据返回:

{
    "code": 200
}

取数相关

获取某个项目的取数历史日志

接口说明:

获取某个项目的所有用户的取数历史日志

基本信息:

API /api/dash/easyFetchRecord/getHistoryLogsForProject
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是项目管理员
projectId Int 项目ID
beginTime String 查询最大时间,格式 "2023-01-01 03:00:00"
endTime String 查询最晚时间,格式 "2023-01-01 03:00:00"
source Optional(String) 可选,取数模式,dragFetch 表示可视化取数,sqlFetch表示是sql取数,不传会返回全部
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "projectId": 64516,
    "beginTime": "2023-01-01 00:00:00",
    "endTime": "2023-12-01 00:00:00"
}

成功数据返回:

{
  "code": 200,
  "result": [
    {
      "id": 14004,
      "source": "dragFetch", // sql取数还是可视化取数
      "status": "ok", //取数的结果是成功还是失败
      "message": null, //失败的情况下有message
      "beginTime": "2023-12-07T07:11:02.863Z", //取数开始时间
      "dataModelId": 1782, //如果是可视化取数,取数对应的模型ID,对应的是 easy_fetch_data_model 这张表
      "dataConnectionId": null, //如果是sql取数,表示取数对应的数据连接ID,对应的是 easy_fetch_data_connection 这张表
      "creatorId": 11835, //取数的用户的ID
      "creatorInfo": { //取数的用户信息
        "id": 11835,
        "uniqueId": "linouya1@corp.netease.com", //账号
        "email": "linouya@126.com", //邮箱
        "nick": "林欧亚-编辑者" //昵称
      },
      "originDataModelId": 700298261 //原始的模型ID是什么, 对应的是 data_model这张表的id
    },
    {
      "id": 14013,
      "source": "sqlFetch",
      "status": "err",
      "message": "数据库SQL执行错误(DatasourceQueryError)",
      "beginTime": "2023-12-19T02:38:53.962Z",
      "dataModelId": null,
      "dataConnectionId": 242,
      "creatorId": 11835,
      "creatorInfo": {
        "id": 11835,
        "uniqueId": "linouya1@corp.netease.com",
        "email": "linouya@126.com",
        "nick": "林欧亚-编辑者"
      },
      "originDataConnectionId": 700318129 //原始的数据连接ID是什么,对应的是 data_connection这张表的id
    },

    {
      "id": 14020,
      "source": "sqlFetch",
      "status": "ok",
      "message": null,
      "beginTime": "2023-12-19T02:40:09.087Z",
      "dataModelId": null,
      "dataConnectionId": 242,
      "creatorId": 11835,
      "creatorInfo": {
        "id": 11835,
        "uniqueId": "linouya1@corp.netease.com",
        "email": "linouya@126.com",
        "nick": "林欧亚-编辑者"
      },
      "originDataConnectionId": 700318129
    }
  ],
  "apiCost": 23,
  "logPath": "http://127.0.0.1:8009/operation/log/hwyiVpvnr1wVmXqP7uDxRp"
}

chatBi 相关

自然语言问答获取数据接口

接口说明:

通过自然语言返回对应的数据结果

基本信息:

API /api/dash/chatBi/askData
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须有模型和项目的权限
projectId Int 项目ID
dataModelIds Arr 要问的模型ID列表
question String 问题
inspect Optional(String) 返回的内容类型,data表示仅数据,sql表示仅sql,all表示数据和sql,picture表示截图,默认all
options Optional(Object) 可选参数

options可选参数:

字段名称 参数类型 参数说明
pictureMaxWidth Optional(Int) inspect为picture时用来指定截图的最大宽度(单位为px),默认不限制宽度
pictureMaxHeight Optional(Int) inspect为picture时用来指定截图的最大高度(单位为px),默认不限制高度

示例输入:

{
    "projectId": 3,  //项目ID
    "dataModelIds": [3, 4], //模型 ID 列表,
    "question": "东北地区的销售额",  //问题
    "token": "xxx" //鉴权token,生成逻辑参考有数BI定制化文档
}

成功数据返回:

{
    "code": 200, //非200表示查询失败
    "message": "用户无权限", //非200 的情况下报错信息
    "result": {
        "answer": {
             "logicalSql": "select xxx", //逻辑 sql
             "physicalSql": "select xxx", //最后物理执行的SQL
             "structureExplain": "按照地区分组,计算销售额求和", //SQL解释
        },
        "fromDataModelId": 3, //选中哪个模型ID
        "hitfFeedback": 0, //是否命中反馈回答
        "isValid": true, //是否是有效答案
        "systemMessage" "调用大模型超时",
        "data": {
            "head": ["地区", "销售额"], //表头
            "body": [["东北", 1], ["华北", 2]], //二维数据,最多返回2万行
            "size": 2 //总行数
        },
        "logId": 65356, // 问答的唯一 ID,可用于点赞点踩
        "askCost": 5695, // 问题理解推理耗时(毫秒)
        "tableQueryCost": 5485, // 数据落库查询耗时(毫秒)
        "trustMode": true, // 是否是可信模式
        "tableQueryData": {}, // 可视化查询 tabelQuery  dsl,业务调用方一般不用关注
        "dataFilters": { //当前查询是否有行列权限作用
            "columnFilters": [], //列权限作用
            "rowFilters": [ //行权限作用
            {
                "$type": "ConditionFilter",
                "fieldName": "dimensions",
                "condition": {
                    "or": [
                        {
                            "$type": "ConditionFilter",
                            "fieldName": "dimensions",
                            "condition": {
                                "and": [
                                    {
                                        "$type": "DFilter",
                                        "filter": {
                                            "$type": "DiscreteDimensionFilter",
                                            "exclude": false,
                                            "select": [
                                                "东北",
                                                "中南",
                                                "华北"
                                            ]
                                        },
                                        "pill": {
                                            "field": "地区",
                                            "dataType": "String",
                                            "$type": "Dimension",
                                            "produced": "Existed",
                                            "alias": "地区",
                                            "granularity": "g0",
                                            "interpretation": "Discrete",
                                            "role": "Dimension",
                                            "tableId": 1,
                                            "tableName": "sheet1"
                                        }
                                    }
                                ]
                            },
                            "priority": 4
                        }
                    ]
                },
                "priority": 4
            }
            ]
        },
    }
}

示例输入(截图):

{
    "projectId": 3,  //项目ID
    "dataModelIds": [3, 4], //模型 ID 列表,
    "question": "东北地区的销售额",  //问题
    "token": "xxx", //鉴权token,生成逻辑参考有数BI定制化文档
    "inspect": "picture"  //进行截图
}

成功数据返回:

{
    "code": 200, //非200表示查询失败
    "message": "用户无权限", //非200 的情况下报错信息
    "result": {
        "dialogId": 36727,  //会话id
        "dialogLogId": 58891,  //单轮问答id
        "downloadLink": "http://..."  //图片下载地址
    }
}

点赞点踩接口

接口说明:

通过自然语言返回对应的数据结果

基本信息:

API /api/dash/chatBi/feedback
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的域管理员
logId Int 问答的 id,参见 askData 接口返回的 logId
feedback Int 0 点踩, 1 点赞
feedbackDetail String(Optional) 反馈的内容,可选
{
    "logId": 123, // 问答的 id,参见 askData 接口返回的 logId
    "feedback": 0, // 0 点踩, 1 点赞,
    "feedbackDetail": "这个问题生成答案的不准确" // 反馈的内容,可选,
}

成功数据返回:

{
    "code": 200,
    "message": "", // 如果报错,则 code 不为 200,且有 message
    "result": "ok",
}

获取 chatBi 历史日志接口

接口说明:

获取 chatBi 历史日志接口

基本信息:

API /api/dash/chatBi/getDomainHistoryDialogs
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,该用户必须是有数系统里的域管理员
domainId Int 域ID
beginTime String 开始时间
endTime String 结束时间
{
    "token": "1503575355359c4fdea8ec1683ed10edd91ae",
    "domainId": 12,
    "beginTime": "2023-07-19 00:00:00",
    "endTime": "2023-07-19 23:59:59"
}

成功数据返回:

{
    "code": 200,
    "result": [{
        "id": 9652,
        "question": "合同明细",  //问题
        "answer": "SELECT * FROM \"合同明细\";", //答案 SQL
        "createTime": "2023-07-19T02:34:29.000Z", //问答时间
        "dataModelId": 700289868,  //模型ID
        "isValid": 1,  //是否有效
        "creatorId": 12923,
        "triggerName": null,
        "creatorInfo": { //发起人用户信息
            "uniqueId": "xiaokang@corp.netease.com", //账号
            "email": "xiaokang@corp.netease.com", //邮箱
            "nick": "" //昵称
        }
    },
    {
        "id": 9651,
        "question": "合同明细金额",
        "answer": "SELECT * FROM \"合同明细\";",
        "createTime": "2023-07-19T02:34:23.000Z",
        "dataModelId": 700289868,
        "isValid": 1,
        "creatorId": 12923,
        "triggerName": null,
        "creatorInfo": {
            "uniqueId": "xiaokang@corp.netease.com",
            "email": "xiaokang@corp.netease.com",
            "nick": ""
        }
    }]
}

外部系统

更新钉钉通讯录接口

接口说明: 购买有数的钉钉小程序后,企业的钉钉通讯录会在每天凌晨 2 点同步到有数数据库中。如果想立即同步,可以主动调用该接口。

权限说明: 使用 token 访问,只有超管才能调用该接口。

基本信息:

API /api/dash/dingTalk/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是超管

返回结果示例:

{
    "code": 200,
    "result": true,
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

报告书签相关

添加书签

接口说明: 根据配置信息新增报告书签

权限说明: 使用 token 访问,只有当前报告的预览权限才能调用该接口。

基本信息:

API /api/dash/bookmark/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须有该报告的预览权限
category Int 书签类型,0 表示公共书签,1表示私人书签
dashboardId Int 报告的页面ID
name String 书签名称
folderId Int 要添加到哪个文件下对应的文件夹ID
setting Int 书签的配置信息,主要用于 iframe 集成时从子页面获取对应的配置信息

返回结果示例:

{
    "code": 200,
    "result": "ok", //新增书签的ID
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

删除书签

接口说明: 根据书签ID删除对应的报告书签

权限说明: 使用 token 访问,只有当前报告的预览权限才能调用该接口。

基本信息:

API /api/dash/bookmark/delete
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须有该报告的预览权限
id Int 书签ID

返回结果示例:

{
    "code": 200,
    "result": "ok",
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

更新书签

接口说明: 根据书签ID更新对应的报告书签的配置信息

权限说明: 使用 token 访问,只有当前报告的预览权限才能调用该接口。

基本信息:

API /api/dash/bookmark/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须有该报告的预览权限
id Int 书签ID
category Int 书签类型,0 表示公共书签,1表示私人书签
name String 书签名称
folderId Int 要添加到哪个文件下对应的文件夹ID
setting Int 书签的配置信息,主要用于 iframe 集成时从子页面获取对应的配置信息

返回结果示例:

{
    "code": 200,
    "result": "ok",
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

添加书签文件夹

接口说明: 添加书签文件夹

权限说明: 使用 token 访问,只有当前报告的预览权限才能调用该接口。

基本信息:

API /api/dash/bookmark/folder/add
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须有该报告的预览权限
category Int 书签文件夹类型,0 表示公共书签,1表示私人书签
name String 书签文件夹名称
dashboardId Int 页面ID

返回结果示例:

{
    "code": 200,
    "result": 12, //书签文件夹的ID
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

删除书签文件夹

接口说明: 根据书签文件夹ID删除对应的文件夹及书签

权限说明: 使用 token 访问,只有当前报告的预览权限才能调用该接口。

基本信息:

API /api/dash/bookmark/folder/delete
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须有该报告的预览权限
id Int 要删除的书签文件夹ID

返回结果示例:

{
    "code": 200,
    "result": "ok",
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

更新书签文件夹

接口说明: 根据书签文件夹ID更新书签文件夹

权限说明: 使用 token 访问,只有当前报告的预览权限才能调用该接口。

基本信息:

API /api/dash/bookmark/folder/update
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须有该报告的预览权限
id Int 书签文件夹ID
name String 更新名称

返回结果示例:

{
    "code": 200,
    "result": "ok",
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

获取书签列表

接口说明: 获取某个报告的书签列表

权限说明: 使用 token 访问,只有当前报告的预览权限才能调用该接口。

基本信息:

API /api/dash/bookmark/getList
Method GET

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须有该报告的预览权限
reportId Int 报告ID

返回结果示例:

{
    "code": 200,
    "result": {
        "privateFolders": [ //私人文件夹列表
            {
                "id": 22070,
                "name": "私人文件夹",
                "category": 1,
                "items": [ //私人文件夹列表下的书签列表
                    {
                        "id": 737,
                        "name": "私人1",
                        "category": 1,
                        "idx": 0,
                        "setting": {},
                        "dashboardId": 71841,
                        "folderId": 22070,
                        "userId": 3672,
                        "creatorId": 3672,
                        "createTime": "2023-11-06T12:43:57.000Z",
                        "modifierId": 3672,
                        "modifyTime": "2023-11-06T12:43:57.000Z",
                        "reportId": 42661,
                        "setAsDefault": 0
                    }
                ],
                "resourceId": 42661
            }
        ],
        "publicFolders": [ //公共文件夹列表
            {
                "id": 22071,
                "name": "公共文件夹",
                "category": 0,
                "items": [ //公共文件夹下的书签列表
                    {
                        "id": 738,
                        "name": "公共1",
                        "category": 0,
                        "idx": 0,
                        "setting": {},
                        "dashboardId": 71841,
                        "folderId": 22071,
                        "userId": 3672,
                        "creatorId": 3672,
                        "createTime": "2023-11-06T12:44:06.000Z",
                        "modifierId": 3672,
                        "modifyTime": "2023-11-06T12:44:06.000Z",
                        "reportId": 42661,
                        "setAsDefault": 0
                    }
                ],
                "resourceId": 42661
            }
        ],
        "privateBookmarks": [ //私人全局的书签列表
            {
                "id": 735,
                "name": "私人1",
                "category": 1,
                "idx": 0,
                "dashboardId": 71841,
                "folderId": -1,
                "userId": 3672,
                "setting": {},
                "creatorId": 3672,
                "createTime": "2023-11-06T12:43:00.000Z",
                "modifierId": 3672,
                "modifyTime": "2023-11-06T12:43:00.000Z",
                "reportId": 42661,
                "setAsDefault": 0
            }
        ],
        "publicBookmarks": [ //私人公共的书签列表
            {
                "id": 736,
                "name": "公共1",
                "category": 0,
                "idx": 0,
                "dashboardId": 71841,
                "folderId": 0,
                "userId": 3672,
                "creatorId": 3672,
                "setting": {},
                "createTime": "2023-11-06T12:43:18.000Z",
                "modifierId": 3672,
                "modifyTime": "2023-11-06T12:43:18.000Z",
                "reportId": 42661,
                "setAsDefault": 0
            }
        ],
        "defaultBookmarkId": null
    },
    "apiCost": 13,
    "logPath": "https://netease.backend.youdata.com/operation/log/ewp4U8cZwA9V2qyNdwkh4o"
}

升级与运维

更新数据库只读状态

接口说明:

可以更新业务数据库为只读状态。

权限说明:

使用 token 访问,只有超管才能调用该接口。

基本信息:

API /api/dash/util/readOnly
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是超管
readOnly Bool 是否设置为只读

返回结果示例

{
    "code": 200,
    "result": {
        "successCount": 1,
        "successMsg": [
            "pid:55637, 开始更新数据库状态成功"
        ],
        "errorCount": 0,
        "errorMsg": []
    },
    "logPath": "http://127.0.0.1:8009/operation/log/cVusvDK4bKcDoy1NDPWgwv"
}

数据升级接口

接口说明:

只能升级某个版本的数据结构,调用该接口存在风险,请谨慎使用。 比如当前数据版本是 3.10 版本,想升级到 3.11 版本,可以直接输入参数 version = "3.11" 即可

权限说明:

使用 token 访问,只有超管才能调用该接口。

基本信息:

API /api/dash/util/dbUpgrade
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权 token,该用户必须是超管
version String 要升级的版本

返回结果示例:

{
    "code": 200,
    "result": "ok",
    "logPath": "http://127.0.0.1:8009/operation/log/qC1oooi5LthtzKoaxVs5o5"
}

数据填报数据源相关接口说明

test 接口

接口说明

测试数据填报数据源是否能够连通

权限说明

使用 token 进行调用,且只能操作自己的表单

基本信息
请求路径
API /api/dash/survey/datasource/test
请求方法 POST
请求参数
字段名称 参数类型 参数说明
surveyId Number 数据填报表单 id
参数调用例子
{
    "surveyId": 1
}
成功返回
{
    code: 200,
       result: {
        apiVersion: '1.0',
        name: '1-admin@admin.com'
       }
}

tables 接口

接口说明

用于返回对应数据填报表单的数据库表名

权限说明

使用 token 访问,并且只能操作自己创建的数据填报表单

基本信息
请求路径
API /api/dash/survey/datasource/tables
请求方法 POST
请求参数
字段名称 参数类型 参数说明
surveyId Number 数据填报表单 id
参数调用例子
{
    "surveyId": 1
}
成功返回
{
    code: 200,
     result: ["1-admin@admin.com"]
}

注:数组中是对应的数据填报的表单的表名

tablemeta 接口

接口说明

用于获取对应表的表结构信息(表头)

权限说明

使用 token 访问,并且只能操作自己创建的数据填报表单

基本信息
请求路径
API /api/dash/survey/datasource/tablemeta
请求方法 POST
请求参数
字段名称 参数类型 参数说明
surveyId Number 数据填报表单 id
参数调用例子
{
    "surveyId": 95
}
成功返回
{
    code: 200,
    fields: [
            {
                "name": "2cba0707-c0ab-d3cf-df48-c1f39be48428",
                "comment": "数3344",
                "type": "Decimal"
            },
            {
                "name": "提交人",
                "type": "String",
                "comment": "提交人"
            },
            {
                "name": "提交时间",
                "type": "DateTime",
                "comment": "提交时间"
            },
            {
                "name": "id",
                "type": "Whole",
                "comment": "id",
                "primaryKey": true
            }
        ]
}

tabledata 接口

接口说明

用于获取对应表的全部数据或指定 id 的某几条数据,同时也会返回表信息

权限说明

使用 token 访问,并且只能操作自己创建的数据填报表单

基本信息
请求路径
API /api/dash/survey/datasource/tabledata
请求方法 POST
请求参数
字段名称 参数类型 参数说明
surveyId Number 数据填报 id
Ids [Number] 可选,数字数组,对应数据的数据 id,如果传此参数则返回对应的 id 的数据
参数调用例子1
{
    "surveyId": 95
}
成功返回
{
    "code": 200,
    "result": {
        "fields": [
            {
                "name": "2cba0707-c0ab-d3cf-df48-c1f39be48428",
                "comment": "数3344",
                "type": "Decimal"
            },
            {
                "name": "提交人",
                "type": "String",
                "comment": "提交人"
            },
            {
                "name": "提交时间",
                "type": "DateTime",
                "comment": "提交时间"
            },
            {
                "name": "id",
                "type": "Whole",
                "comment": "id",
                "primaryKey": true
            }
        ],
        "data": [
            [
                "1",
                "admin",
                "2018-12-03 14:24:49",
                56573
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56574
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56575
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56576
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56577
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56578
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56579
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56580
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56581
            ]
        ]
    },
    "logPath": "http://127.0.0.1:8009/operation/log/oDcvTEEMZwaSoe9GecmpfV"
}
参数调用例子2
{
    "surveyId": 95,
    "ids": [56573, 56574]
}
成功返回
{
    "code": 200,
    "result": {
        "fields": [
            {
                "name": "2cba0707-c0ab-d3cf-df48-c1f39be48428",
                "comment": "数3344",
                "type": "Decimal"
            },
            {
                "name": "提交人",
                "type": "String",
                "comment": "提交人"
            },
            {
                "name": "提交时间",
                "type": "DateTime",
                "comment": "提交时间"
            },
            {
                "name": "id",
                "type": "Whole",
                "comment": "id",
                "primaryKey": true
            }
        ],
        "data": [
            [
                "1",
                "admin",
                "2018-12-03 14:24:49",
                56573
            ],
            [
                "1",
                "admin",
                "2018-12-03 14:27:59",
                56574
            ]
        ]
    },
    "logPath": "http://127.0.0.1:8009/operation/log/oDcvTEEMZwaSoe9GecmpfV"
}

根据日志记录查询相关操作资源信息接口

接口说明

根据有数后端系统打印的 transLog 日志内容,查询相关接口的操作人信息,资源信息以及资源的创建人等信息

权限说明

使用 token 访问,只有超级管理员才能使用该接口

基本信息

请求路径
API /api/dash/resource/getLogInfo
请求方法 GET

请求参数

字段名称 参数类型 参数说明
token String 用于鉴权
operatorId Number transLog中记录的userId
resourceId Number or String transLog中记录的resourceId
resourceName String transLog中记录的resourceName

请求参数示例

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "operatorId": 1,
  "resourceId": 2,
  "resourceName": "NEW_REPORT"
}

返回结果示例:

{
  "code": 200,
  "result": {
    "operator": {
      "id": 1,
      "nick": "zhangsan",
      "email": "zhangsan@163.com",
      "uniqueId": "zhangsan@163.com"
    },
    "creator": {
      "id": 2,
      "nick": "lisi",
      "email": "lisi@163.com",
      "uniqueId": "lisi@163.com"
    },
    "modifier": {
      "id": 2,
      "nick": "lisi",
      "email": "lisi@163.com",
      "uniqueId": "lisi@163.com"
    },
    "resource": {
      "id": 1,
      "title": "我的报告",
      "createTime": "2019-01-01 00:00:00",
      "modifierTime": "2019-01-02 00:00:00"
    },
    "resourceName": "报告"
  }
}

指标系统相关

同步第三方指标信息

接口说明

有数支持自定义和指标系统(第三方指标数据), 该接口支持了从第三方同步指标元信息

基本信息
名称 参数
API /api/dash/mammutIndicator/sync
METHOD POST
请求参数

同步指标系统的数据分为三种情况, 全量同步, 单个指标信息同步 以及 删除指标信息

1. 批量同步 : 用于批量同步指标信息, 全量同步某一来源的指标信息;保存数组内的指标信息,同时删除有数属于该来源的其余指标信息。

字段名称 参数类型 参数说明
type String 标记同步的类型, 全量同步时为 full
source String 用于标记第三方来源
mammutIndicators Array\ 指标数组, 其中 MammutIndicator 为指标对象

2. 单个指标信息同步: 更新或新建某一个指标信息

字段名称 参数类型 参数说明
type String 标记同步的类型, 单个指标信息同步时为 single
source String 用于标记第三方来源
mammutIndicator MammutIndicator 指标对象: MammutIndicator

3. 删除指标信息: 根据 指标ID和来源 删除有数中的某一个指标信息

字段名称 参数类型 参数说明
type String 标记同步的类型, 删除指标信息时为 delete
source String 用于标记第三方来源
mammutIndicator MammutIndicator 指标对象: MammutIndicator

其中 MammutIndicator 的结构

字段名称 参数类型 参数说明
indicatorId Int 指标ID+source, 用于唯一标示
name String(Optional) 指标名称
caliber String(Optional) 业务口径
techCaliber String(Optional) 技术口径, 例如SQL等信息, 用于辅助了解指标信息
接口返回
// 成功
{ "code": 200 }
// 失败
{
    "code": 731,
    "message": "",    // 报错信息
}

全局搜索相关

开启全局搜索

在 yaml 中开启 mammutAdapter 模块,配置环境变量

env 注释
ENABLE_ES_SEARCH 'true' 开启搜索特性
ES_PROTOCOL http
ES_HOST es 有数 es 日志库的 host
ES_PORT 9200 数 es 日志库的 port

启动 ma 模块后,登录有数的超管账号,访问接口 /api/dash/es/refreshIndex,然后查看 ma 模块的日志,看是否开始正常索引了

根据字段名或报告名搜索报告接口

接口说明

根据报告名称或字段名称搜索报告

权限说明

使用 token 访问,只有超级管理员才能使用该接口

环境变量:

web 需要开启这两个环境变量

  ES_SEARCH_URL: http://es:9200
  ES_SEARCH_INDEX_NAME: youdata-private

基本信息

请求路径
API /api/dash/es/searchReport
请求方法 POST

请求参数

字段名称 参数类型 参数说明
token String 用于鉴权的Token
projectId Option(Number) 项目ID
reportKeyword Option(String) 报告名称关键字
measureKeyword Option(String) 度量字段关键字
dimensionKeyword Option(String) 维度字段关键字

请求参数示例

{
  "token": "1503575355359c4fdea8ec1683ed10edd91ae",
  "projectId": 2,
  "reportKeyword": "超市",
  "dimensionKeyword": "地区",
  "measureKeyword": "利润"
}

返回结果示例:

{
  "code": 200,
  "result": [
    {
      "reportName": "超市",
      "reportId": 134,
      "projectId": 2,
      "paths": [ // 文件夹路径
        "1112",
        "1"
      ],
      "creator": "admin",
      "createTime": "2017-12-29 14:40:22",
      "modifyTime": "2024-02-11 11:25:42",
      "status": "1",
      "componentHighlights": [
        {
          "componentId": "c-1-134-714-jj41rhts",
          "componentTitle": "利润(按地区划分)",
          "matchDimensions": [
            "地区"
          ],
          "matchMeasures": [
            "利润"
          ]
        }
      ],
      "webLink": "https://local.youdata.com:7007/dash/folder/2?rid=134",
      "mobileLink": "https://local.youdata.com:7007/dash/mobile/134",
      "integrationLink": "https://local.youdata.com:7007/dash/integration/2?rid=134"
    }
  ],
  "apiCost": 142,
  "logPath": "http://127.0.0.1:8009/operation/log/5n6kBKQgZ1yfbsWrtwrMYt"
}

单点登录说明

功能介绍:

解决客户需要通过第三方登录方式登录有数的问题,有数系统会保存登录用户的相关信息,但是不会保存密码。

这里访问第三方系统,也需要考虑做接口鉴权的问题,需要加一个时间戳和密钥作验证

  1. 通过跳转单点第三方登录界面实现方式

image

  1. 通过loginToken验证的服务端实现方式

image

  1. 自定义接口登录

功能介绍:

有数支持用户通过自定义接口进行登录的方式,用户通过该接口传入用户自定义的参数,然后通过用户自定义处理文件对该参数进行登录校验,校验成功后,跳转到用户指定的地址,用户登出时跳出的地址在此处配置。

接口:/tokenLogin GET 参数:

{
    redirectPath: '/'                              // 登陆成功后的跳转地址,可以不指定
    token: '1503575355359c4fdea8ec1683ed10edd91ae' // 到用户sso系统鉴权的token
}

用户需要提供校验上述token的接口,该接口的返回格式如下:

{
    code: 200,                          // 200表示鉴权成功,非200表示鉴权失败
    result: {
        email: string optional,         // 邮箱,有些企业该字段会是唯一
        phone: string optional,         // 手机号码
        uniqueId: string,               // 用来判断用户唯一性的字段,可能是emailphoneuid等字段其中之一
        nick: string optional,          // 用户昵称
        position: string optional,      // 用户职位
        department: string optional,    // 用户所属部门
        company: string optional,       // 用户所属公司
        doNotAdd: bool optional,        // 用户不存在有数时,是否添加到有数,默认添加
        filterMap: object optional
        // 数据筛选条件(每个数据连接下对应的各个表字段的数据权限),详细说明见首页的关于“数据权限传递参数详细说明”,该参数只是用于集成页面
    },
    message: string optional            // 错误信息,code200时传入
}

集成页面说明

功能介绍

集成页面是指用户在没有登录有数的情况下,通过iframe方式将有数某些页面潜入到第三方系统中,实现预览功能。因为用户没有登录,所有任何页面都要带上通过有数的/api/dash/util/genToken方式生产的token参数做鉴权,生产token的逻辑在前面的接口文档里有介绍。

集成页面的特点

  • 用户无需登录可以访问有数报告
  • 可以通过iframe方式嵌入到其它系统中
  • 只需要同一个账号,通过生成token时设置数据权限不同,针对同一张报告,可以看到不同的数据
  • 对于一些不需要登录有数系统的只需要访问集成页面的用户,可以使用同一个账号进行管理,不需要在有数进行数据权限和资源权限控制
  • 建议在使用数据权限进行控制时,每个数据模型都关联同一个权限表,这样只需要控制该张权限表的数据权限,便可以控制所有报告的权限

集成页面列表

目前有数提供的集成页面

报告预览集成页面:/dash/integration/:projectId

字段名称 参数说明
token 鉴权使用
rid 报告id(若不开启发布功能,则为报告id;若开启发布功能:id可以是已经发布的报告的id,也可以是报告草稿的id)
did 报告页面id
toolbar 功能键
mode 底部导航条显示方式
defaults 筛选器
side 侧边栏
sort 排序
hidePublic 公共文件夹隐藏
hidePrivate 私有文件夹隐藏
hideTitle 顶部标题栏隐藏
tabColor tab页面颜色设置
hideScaleBar 缩放栏隐藏
hidePageBar 整个报告底部工具栏隐藏
enableReportDetail 报告列表详情,内容是属性以及相关信息,默认是 false
hideProgressBar 顶部进度条隐藏
hideLoading 加载中动画隐藏
scale 缩放配置
bottomBarPos 底部栏放在顶部配置
backgroundColor 页面背景颜色设置
fit 集成页面自适应宽度时两边不留白,默认是 false
parameters 参数配置值
showExportExcelRemind 显示导出Excel时的提醒,默认是false
showExportExcelData 显示导出Excel时的数据格式选择,默认是false
customCssId 指定使用哪个自定义CSS(可选)
集成报告草稿和发布rid

报告未开启发布功能:id则为报告id。 报告开启发布功能:‘/api/dash/folder/list’、‘/api/dash/report/get’接口中:id则为报告草稿的id,publishRelatedId为发布报告的id。

集成报告模式

报告的模式目前分为两种:normal、simple;加入的原因主要为了区别报告页面切换的方式。

配置方式:直接在url后加入

  &mode=simple
  • normal

    普通模式,是一种默认配置模式,报告的页面切换方式与目前预览方式一致;

  • simple

    简单模式,是一种相对normal更为简单的页面切换方式

集成报告的导航栏

报告导航栏可配置项包括(打印功能、数据刷新功能、报告导出功能、全屏功能) 可配置参数print、refresh、bookmark、export、fullScreen、doctor分别对应打印、刷新数据、书签、导出报告、全屏、数据医生 可以配置显示顺序以及是否显示、默认情况下都显示,默认顺序为[print, refresh, bookmark, export, doctor, fullScreen]

配置方式:直接在url后加入

  &toolbar=["print", "refresh", "bookmark", "export", "doctor", "fullScreen"]
集成报告默认显示页面

集成报告默认进入显示第一页,如果需要更改默认显示页面;直接配置url中的dashboard

配置方式:直接在url后加入

  &did=14510
集成报告筛选器控件默认参数配置

目前只支持对列表筛选器控件,日期筛选器控件的配置。

  • 列表筛序器控件

配置方式:直接在url后加入

  &defaults=默认配置的数据结构

配置参数数据结构如下:

{
  "列表筛选器控件id":{
    selected: Array,
    exclude: Boolean
  }
}

其中selected表示设置的选项列表,如果列表筛选默认有设置, 这里的配置会覆盖默认的配置。

  • 日期筛序器控件

配置方式:直接在url后加入

  &defaults=默认配置的数据结构

目前只支持静态时间段,筛选出从起始时间到结束时间的数据,配置参数数据结构如下:

{
  "日期筛选器控件id":{
    type: "StaticTime",
    minBound: timeString,
    maxBound: timeString
  }
}
eg:
{type: "StaticTime", minBound: "2016-07-01 00:00:00", maxBound: "2016-07-20 23:59:59"}

其中minBound,maxBound分别表示起始时间与结束时间,起始时间不能大于结束时间,同时minBound,maxBound的日期格式为"YYYY-MM-DD HH:mm:ss"。如果日期筛选默认有设置,这里的配置会覆盖默认的配置。

集成报告的侧边栏

集成报告默认不展示侧边栏,如需展示侧边栏;直接配置url中的side

配置方式:直接在url后加入

  &side=true
集成报告的侧边栏排序

集成报告侧边栏默认按照名称升序,如需更改排序方式,直接配置url中的sort

配置方式:直接在url后加入

  &sort=title:1/title:2/modifyTime:1/modifyTime:2
集成报告的侧边栏公共文件夹隐藏

集成报告侧边栏默认展示公共文件夹,如需隐藏,直接配置url中的hidePublic

配置方式:直接在url后加入

  &hidePublic=true
集成报告的侧边栏私有文件夹隐藏

集成报告侧边栏默认展示私有文件夹,如需隐藏,直接配置url中的hidePrivate

配置方式:直接在url后加入

  &hidePrivate=true
集成报告的标题栏隐藏

集成报告标题栏默认展示,如需隐藏,直接配置url中的hideTitle 如果隐藏,toolbar也会隐藏

配置方式:直接在url后加入

  &hideTitle=true
集成报告的tab页面颜色设置

集成报告tab页面颜色设置,如需设置,直接配置url中的tabColor,css颜色

配置方式:直接在url后加入

  &tabColor=red

或者

  &tabColor=%23ccc
集成报告的tab页面区域缩放栏隐藏

集成报告tab页面区域缩放栏默认展示,如需隐藏,直接配置url中的hideScaleBar

配置方式:直接在url后加入

  &hideScaleBar=true
集成报告的底部栏隐藏

集成报告底部栏默认展示,如需隐藏,直接配置url中的hidePageBar

配置方式:直接在url后加入

  &hidePageBar=true
集成报告的详情展示

集成报告详情默认不展示,如需展示,直接配置url中的enableReportDetail

配置方式:直接在url后加入

  &enableReportDetail=true
集成报告的顶部进度条隐藏

集成报告顶部进度条默认展示,如需隐藏,直接配置url中的hideProgressBar

配置方式:直接在url后加入

  &hideProgressBar=true
集成报告的加载中动画隐藏

集成报告加载中动画默认展示,如需隐藏,直接配置url中的hideLoading

配置方式:直接在url后加入

  &hideLoading=true
集成报告的缩放配置

集成报告缩放配置,默认为100%:100: 为缩放100%,'width':自适应宽度,'screen':自适应窗口,直接配置url中的scale

配置方式:直接在url后加入

  &scale=width
集成报告的底部栏放在顶部配置

集成报告底部栏放在顶部配置,默认为放在底部,如需放在顶部,直接配置url中的bottomBarPos

配置方式:直接在url后加入

  &bottomBarPos=top
集成报告的页面背景颜色设置

集成报告页面背景颜色设置,如需设置,直接配置url中的backgroundColor,css颜色

配置方式:直接在url后加入

  &backgroundColor=red

或者

  &backgroundColor=%23ccc
集成报告的页面参数控制的配置

集成报告页面全局参数或者参数控制器的参数的默认配置,目前只支持静态的,如需设置,直接配置url中的parameters 用户可配置的参数为:[{id:控制参数的id,defaultValue:控制参数的值}] 若非浏览器需要直接使用需要:encodeURIComponent('[{"id":1908,"defaultValue":2},{"id":35,"defaultValue":"2020-12-01%2017:54:36"}]')

配置方式:直接在url后加入

  &parameters=[{"id":1908,"defaultValue":2},{"id":35,"defaultValue":"2020-12-01%2017:54:36"}]
集成报告的显示导出Excel时的提醒

集成报告在导出Excel时的提醒默认隐藏,如需显示,直接配置url中的showExportExcelRemind

配置方式:直接在url后加入

  &showExportExcelRemind=true
集成报告的显示导出Excel时的数据格式选择

集成报告在导出Excel时的数据格式选择默认隐藏,如需显示,直接配置url中的showExportExcelData

配置方式:直接在url后加入

  &showExportExcelData=true
图表权限配置

此处的权限配置主要用于图表功能的配置(如:图表导出功能、数据预览、排序级别等功能)

数据结构:

{
  closeMoreMenu: Boolean // 关闭图表菜单更多配置
  global:{
      export: Array, // ['image','excel','pdf']
      view: Boolean, // true
      sortPriority: Boolean, // true 排序级别
      refreshHist: Boolean, // true 查看刷新历史记录
      inteExplore: Boolean, // true 智能分析
      graphicLink: Boolean, // 图表链接
      setWarning: Boolean, // 设置度量预警
      viewMaxReport: Boolean, // 查看最大化
      dataDoctor: Boolean, // 数据医生
      copyData: Boolean // 复制数据
    }
}

上面的注释部分表示默认的配置方式:即导出和数据预览功能都是具有的

使用方式

&permission = serialize(数据结构)
@example 数据结构 = {
  export: ['image', 'excel', 'pdf'], // 导出
  view: true, // 查看数据
  sortPriority: true, // true 排序级别
  inteExplore: true, // true 智能分析
  refreshHist: true, // true 查看刷新历史记录
  graphicLink: true, // 图表链接
  setWarning: true, // 设置度量预警
  viewMaxReport: true, // 查看最大化
  dataDoctor: true, // 数据医生
  copyData: true // 复制数据
}

https://youdata.163.com/dash/integration/2345?rid=12&token=1231dadf12312adfad323adas&side=true&sort=title:1&hidePublic=false&hidePrivate=true&toolbar=[]&mode=normal&permission=%7B%22global%22%3A%7B%22export%22%3A%5B%22image%22%2C%22excel%22%2C%22pdf%22%5D%2C%22view%22%3Atrue%7D%7D
dom文档相关配置

此处的配置主要用于dom文档的部分可配项(目前只支持配置dom文档的title自定义设置)

数据结构:

{
    title:String, //集成报告-网易有数
}

使用方式:

&head = serialize(数据结构)
@example 数据结构 = {
  "title": "自定义文档标题"
}

https://youdata.163.com/dash/integration/2345?rid=12&token=1231dadf12312adfad323adas&head=%7B%22title%22%3A%22%E8%87%AA%E5%AE%9A%E4%B9%89%E6%96%87%E6%A1%A3%E6%A0%87%E9%A2%98%22%7D

大屏预览集成页面:/dash/screenIntegration/:projectId

字段名称 参数说明
token 鉴权使用
sid 大屏id
hideTitleBar 大屏隐藏上方bar
bodyScreen 大屏采用body尺寸来计算(会将head覆盖)
customCssId 指定使用哪个自定义CSS(可选)
https://youdata.163.com/dash/screenIntegration/2345?sid=12&token=1231dadf12312adfad323adas&hideTitleBar=true&bodyScreen=true
大屏预览集成页面的侧边栏

大屏预览集成页面默认不展示侧边栏,如需展示侧边栏;直接配置url中的side

配置方式:直接在url后加入

  &side=true

新大屏预览集成页面:/dash/newScreen/integration/view/:sid

字段名称 参数说明
token 鉴权使用
sid 新大屏id
customCssId 指定使用哪个自定义CSS(可选)
https://youdata.163.com/dash/newScreen/integration/view/561?token=1231dadf12312adfad323adas

权限管理集成页面:/dash/permission/:projectId/role

只有项目管理员可以集成预览这个页面

字段名称 参数说明
token 鉴权使用
https://youdata.163.com/dash/permission/2345/role?token=1231dadf12312adfad323adas

报告导出管理集成页面

提供项目中心-分享与导出管理-报告导出页面的集成

path: /dash/massExportIntegration/:projectId

projectId 报告所在项目id

字段名称 参数说明
token 鉴权使用
https://youdata.163.com/dash/massExportIntegration/2345?token=1231dadf12312adfad323adas

移动端页面集成


移动端的图表化内容通过webView的方式嵌入web页面进行展示,移动端的内容集成与PC保持一致,采用同一路由进行访问,不过配置参数略有不同。

报告页集成(/dash/integration/:projectId)

默认显示第一页内容,可以通过设置页面ID,来改变默认显示的页面。配置参数如下:

字段名称 参数说明
token 鉴权使用
rid 报告id
hideTitle 标题栏隐藏(可选)
enableReportDetail 报告列表详情,内容是属性以及相关信息,默认是 false (可选)
mode 集成报告模式 (可选)
did 页面id (可选)
disableGraphicJump 移动端禁止双击页面跳转默认跳转
customCssId 指定使用哪个自定义CSS(可选)
https://youdata.163.com/dash/integration/2345?rid=12&hideTitle=true&token=1231dadf12312adfad323adas
集成报告的详情展示

集成报告详情默认不展示,如需展示,直接配置url中的enableReportDetail

配置方式:直接在url后加入

  &enableReportDetail=true
集成报告的标题栏隐藏

集成报告标题栏默认展示,一般情况下移动端不需要展示标题栏,需配置url中的hideTitle为true。

配置方式:直接在url后加入

  &hideTitle=true
集成报告的双击页面跳转配置

集成报告双击页面跳转默认跳转,如需不跳转,直接配置url中的disableGraphicJump

配置方式:直接在url后加入

  &disableGraphicJump=true
集成报告模式

移动端的集成报告模式同样是为了区别报告页面切换的方式,报告的模式目前分为三种:normal、simple、tab

配置方式:直接在url后加入

  &mode=simple
  • normal

    普通模式,是一种默认配置模式,页面无翻页器,需要手动配置did(页面id)进行翻页;

  • simple

    简单模式,当报告有多个页面的时候显示翻页器。

  • tab

    页签模式,当报告有多个页面的时候顶部显示tab页签。

报告页特定报表的显示

移动端的单报表的显示,是通过定位到某个报告的特定报表,从而显示单个报表内容。配置参数如下:

字段名称 参数说明
token 鉴权使用
rid 报告id
cid 报表id
did 页面id (可选)
customCssId 指定使用哪个自定义CSS(可选)

特定报表的显示只需要配置以上参数,此外不需要其他额外的配置。

https://youdata.163.com/dash/integration/12?rid=34&cid=c-12-34-56-sckfjshe&token=1231dadf12312adfad323adas
特定报表和页面需要匹配

设定报告页报表id时会从当前报告页取报表,所以特定报表和页面需要匹配;如果设置的报表不属于第一页报告页,则需要设置与该报表匹配的did(页面id),否则会因为取不到报表而不显示页面。

驾驶舱集成


驾驶舱集成页面除了默认展示侧边栏,没有排序和私有公共文件夹配置外,其他配置与报告集成一致,详细的配置说明见报告预览集成页面

驾驶舱集成页面(/dash/cockpitIntegration)

字段名称 参数说明
token 鉴权使用
pid 项目id
rid 报告id
did 报告页面id
toolbar 功能键
mode 底部导航条显示方式
defaults 筛选器
side 侧边栏
hideTitle 顶部标题栏隐藏
tabColor tab页面颜色设置
hideScaleBar 缩放栏隐藏
hidePageBar 整个报告底部工具栏隐藏
hideProgressBar 顶部进度条隐藏
scale 缩放配置
bottomBarPos 底部栏放在顶部配置
backgroundColor 页面背景颜色设置
customCssId 指定使用哪个自定义CSS
https://youdata.163.com/dash/cockpitIntegration?pid=2345&rid=12&hideTitle=true&token=1231dadf12312adfad323adas
驾驶舱集成默认显示报表

如果驾驶舱内有报告,不配置项目id和报告id或者配置错误的报告id会默认展示第一个报表,如果需要更改默认显示报告,直接配置url中的pid项目id和rid报告id;默认报表的展示可以只配置需要展示的报告id,不配置pid不影响报告展示,但可能会影响导出功能。

配置方式:直接在url后加入

  &pid=234&rid=14510
驾驶舱集成的侧边栏

驾驶舱集成页面默认展示侧边栏,如需隐藏侧边栏;直接配置url中的side

配置方式:直接在url后加入

  &side=false

数据填报集成页面

path: /survey/import/:surveyId

surveyId: 创建的数据填报表单 id

字段名称 参数说明 是否必须
token 鉴权使用 true
tab 填报模式 template: 模版模式,只可查看表单不显示提交栏, import: 填报模式, 不加参数默认为填报模式 false
refered 代表被引用 integrate true
hideCreator 隐藏页面顶部创建人 false
hideDeadline 隐藏页面顶部截止时间 false
hideSubNav 隐藏页面顶部状态栏 false
https://youdata.163.com/survey/import/294?token=1231dadf12312adfad323adas&refered=integrate&hideCreator=true&hideDeadline=true

数据填报数据管理页面

path: /survey/:projectId/

projectId 数据填报所在项目id

字段名称 参数说明 是否必须
token 鉴权使用 true
surveyId 创建的数据填报表单 id true
tab 模式 data true
refered 代表被集成 integrate true
hideSubNav 隐藏子导航 true true
https://youdata.163.com/survey/1485/?surveyId=1677&tab=data&refered=integrate&hideSubNav=true&token=16644203646189984627ff14391e2ccda8ff8

数据填报表单填写、数据管理页面(支持切换模式)

path: /survey/:projectId/

projectId 数据填报所在项目id

字段名称 参数说明 是否必须
token 鉴权使用 true
surveyId 创建的数据填报表单 id true
tab 默认模式 data 或 import true
refered 代表被集成 integrate true
showExportTemplate 显示导出模板按钮,不显示不要传该参数 true false
importActions 需要显示的模式切换按钮列表,需要encode ["import", "data", "template"] false
https://youdata.163.com/survey/1485/?surveyId=1677&tab=data&refered=integrate&token=123&importActions=%5B"import"%2C"data"%5D

报告编辑集成页面

dash/:rid/editor

url参数名称 参数说明
token 鉴权使用
pid 项目id

下列参数在生成token时,配置在clientSetting.integrate字段下

参数名称 参数说明
disableEditExit 编辑时隐藏退出入口,默认为 true
exitPath 同时编辑自动退出、右上关闭按钮没隐藏时等场景的跳转地址
customCssId 指定使用哪个自定义CSS(可选)

ChatBI集成页面

dash/chatbi

url参数名称 参数说明
token 鉴权使用

下列参数在生成token时,配置在clientSetting.chatBi下

参数名称 参数说明
hideApp 隐藏移动端二维码入口,默认为 false
hideExport 隐藏导出管理入口,默认为 false
hideHelp 隐藏帮助中心以及跳转帮助中心的入口,默认为 false
hidePopo 隐藏技术支持入口,默认为 false
hideUser 隐藏当前用户入口,默认为 false
hideFavorite 隐藏收藏夹、禁用收藏功能,默认为 true
hideHistory 禁用历史会话功能,默认为 true
hideMyShare 隐藏我的分享,默认为 false
hideFilterSet 隐藏筛选集,默认为 false
hideChatModeSwitcher 隐藏对话模式切换按钮,默认为false
hideDataModelSelector 隐藏数据模型选择按钮,默认false
canEditCalculatedField 是否允许编辑计算字段,默认为false
hideAccountLogo 隐藏账户Logo,默认为 false
showCloseIcon 是否展示右上角的关闭按钮,默认为false
defaultChatMode 默认问答模式, "credible"或者"professional",默认"credible"
chatTopic 对话主题, "dataModel"或者"indicator",默认"dataModel"
indicatorName 指标名称,字符串
dataModelId 指定数据模型id
customCssId 指定使用哪个自定义CSS(可选)

取数主页集成页面

dash/easyFetch/:pid?refered=integrate

url参数名称 参数说明
token 鉴权使用

下列参数在生成token时,配置在clientSetting.fetch下

参数名称 参数说明
hideNav 隐藏导航栏,默认为 false
hideFetch 隐藏可视化取数,默认为 false
hideSqlFetch 隐藏SQL取数,默认为 false
hideChat 隐藏Chat取数,默认为 true

可视化取数编辑集成页面

dash/easyFetchEditor/:pid?refered=integrate

url参数名称 参数说明
token 鉴权使用

下列参数在生成token时,配置在clientSetting.fetch下

参数名称 参数说明
hideFetchNav 隐藏导航栏,默认为 false
hideSqlFetch 隐藏切换SQL取数,默认为 false
hideChat 隐藏前往Chat取数,默认为 true
hidePublic 隐藏公共查询,默认为 false
hidePrivate 隐藏我的查询,默认为 false
hideExit 隐藏返回模型库,默认为 false

Sql取数编辑集成页面

dash/easyFetchSqlEditor/:pid?refered=integrate

url参数名称 参数说明
token 鉴权使用

下列参数在生成token时,配置在clientSetting.fetch下

参数名称 参数说明
hideFetchNav 隐藏导航栏,默认为 false
hideFetch 隐藏切换可视化取数,默认为 false
hideChat 隐藏前往Chat取数,默认为 true
hidePublic 隐藏公共查询,默认为 false
hidePrivate 隐藏我的查询,默认为 false
hideExit 隐藏返回模型库,默认为 false

数据模型集成页面

阅览页

path: dash/dataModel/integration/:projectId?mid={mid}

projectId 项目id mid 模型id

字段名称 参数说明 是否必须
token 鉴权使用 true
hideSubNav 隐藏页面顶部工具栏,默认为false false
hideExportBtn 隐藏导出按钮,默认为true false

编辑页

path: dash/dataModel/editorIntegration/:projectId?mid={mid} 示例: https://d.youdata.com/dash/dataModel/editorIntegration/1?mid=700298296&hideExitAndNewReportBtn=true&schemaNameParams=0902&disableSwitchSchema=true&hideExitBtn=true

projectId 项目id mid 模型id

字段名称 参数说明 是否必须
token 鉴权使用 true
hideSubNav 隐藏页面顶部工具栏,默认为false false
hideSaveBtn 隐藏保存按钮,默认为false false
hideExitBtn 隐藏退出按钮,默认为false false
hideExitAndNewReportBtn,默认为false 隐藏保存并新建报告按钮 false
hideMoreBtn 隐藏显示更多按钮,默认为true false
hideExportBtn 隐藏导出按钮,默认为true false
disableSwitchSchema 是否允许切换数据库,默认为false false
schemaNameParams 数据库名称 false

数据表格集成页面

阅览页

path: dash/electable/:projectId/integration/:electableId

projectId 项目id electableId 表格id

参数名称 参数说明 是否必须
showSubNav 是否显示主页表格顶部栏 默认隐藏 false
hideToolbar 是否隐藏工具栏 默认显示 hideToolbar or hideToolbar=1 false
toolbarLayout 工具栏布局 默认缩略收起 平铺:toolbarLayout=1 false
hidePrint 隐藏打印按钮,默认显示 hidePrint or hidePrint=1 false
hideFilterExplanation 隐藏导出口径,默认显示 hideFilterExplanation or hideFilterExplanation=1 false
hideExportConfig 隐藏导出报表配置,默认显示 hideExportConfig or hideExportConfig=1 false
hideExportAllSheet 隐藏导出所有页面,默认显示 hideExportAllSheet or hideExportAllSheet=1 false
hideExportExcel 隐藏导出Excel,默认显示 hideExportExcel or hideExportExcel=1 false
hideExportWps 隐藏导出WPS格式(*.et)文件,默认显示 hideExportWps or hideExportWps=1 false
hideExportCsv 隐藏导出Csv,默认显示 hideExportCsv or hideExportCsv=1 false
hideExportPdf 隐藏导出pdf,默认显示 hideExportPdf or hideExportPdf=1 false
skipPrintConfirm 跳过打印配置,默认显示 skipPrintConfirm false

注:以下打印配置参数仅在skipPrintConfirm配置情况下生效 | printRange | 打印范围,默认全表 | 全表:1 选中区域:2 | false | | printOrientation | 打印方向,默认纵向 | 纵向:1 横向:2 | false |

ChatBI单会话集成页面

dash/chatbi/dialogIntegration

url参数名称 参数说明
token 鉴权使用
dialogId api/dash/chatBi/askData接口inspect参数传picture时返回

chatbi单会话集成链接示例:

https://demo.youdata.com/dash/chatbi/dialogIntegration?token=1731396576840e8cecf302c10d439d6e5f031&dialogId=5383

下列参数推荐在生成token时,配置在clientSetting.chatBi下(url参数也可生效).

参数名称 参数说明
hideQueryExplanation 隐藏查询解释
hideQueryTable 隐藏查询表
hideQueryToolbarMore 隐藏查询工具栏的更多
hideGraphicChangeType 隐藏图标切换类型
hideQueryForcast 隐藏预测
hideGraphicToolbar 隐藏图表工具栏
hideGraphicMax 隐藏图表全屏操作,默认隐藏
hideGraphicRefresh 隐藏图表刷新操作,默认隐藏
hideGraphicRefLine 隐藏图表参考线
tagId 模型标签id,查询限制特定标签下的数据模型
hideAskInfo 隐藏ask chatItem
dataModelIds 指定查询的模型,支持多个,英文逗号,分隔
question 问题内容,例:"东北地区的生产总值?"
dialogId 会话id,展示当前会话的详细内容
ignoreAiUserCorrect 跳过选择表、字段、成员等步骤

用户自定义数据连接说明

功能介绍

有数允许用户按照自己的方式输入数据连接的信息,用户需要编写js代码对自定义的数据连接信息进行解析。

Function: getConnection
input: json object      // 用户自定义数据连接信息的json对象
output: {               // 输出为有数定义的数据连接对象
    type: string,       // 类型
    host: string,       // 地址
    port: number,       // 端口
    username: string,   // 用户名
    password: string,   // 密码
    parameters: object, // 额外信息
    namespace: string,  // 结构名称
}

配置说明

配置位置

有数有四个地方可以进行参数配置,分别是

  • 环境变量:docker 中使用 docker-compose.yaml 进行配置。变量名采用大写下划线形式;
  • config 模块:平台等引用的子模块。不同文件名代表了不同环境下的配置。变量名采用驼峰形式;
  • 自定义配置文件:Platform/custom/custom.config.json 文件。变量名采用驼峰形式;
  • backend 中的设置。直接在 http://127.0.0.1:8009/operation/setting 中的 开发后台管理-设置 中进行配置。注意有两个 tab,外观和平台。

配置优先级

backend 中的设置 > 自定义配置文件 > 环境变量 > config 模块

参数解析方法

  • 环境变量:使用 envParser 进行解析;
  • config 模块:通过 require('config') 进行解析。参考 https://www.npmjs.com/package/config
  • 自定义配置文件:通过解析 custom.config.json 文件;

envParser 调用方法

envParser 解析 node 环境变量,并为对应的系统配置进行赋值。它接收四个参数,分别是

  • configJSON:模块的配置对象
  • ev:node 环境变量
  • appPath:Platform 模块所在路径
  • envList:需要解析的环境变量数组。各模块根据实际情况决定数组内容。数组中包括多个对象。每个对象中的属性包括:
    • name:环境变量中的变量名。大写下划线格式。
    • type:变量的类型。目前包括 String、Bool、Json、smtp、Array、Store、Custom。其中,Array 类型的变量,各元素之间用英文逗号 , 隔开,不要加多余的空格。
    • path(可选):envParser 会直接把大写下划线形式的环境变量参数映射成系统配置中的驼峰形式。如果直接映射的结果不符合预期,就在 path 中放入期望的系统配置变量名。支持映射为对象中的属性,用 . 隔开。
    • keyMap(可选):对于对象(Json)类型的变量,需要传入该参数指明需要解析的属性。对于变量 LOG_DBDBREDISCAPTURECACHE_CAPTURECHROME,envParser 提供了默认的 keyMap,故上述环境变量可以不传 keyMap 参数。
    • fn(可选):对于无法使用 envParser 提供的统一方法进行映射的配置,在 fn 中进行处理。

envList 的样例:

[
    //把环境变量中的 PLATFORM_LINK 赋值给系统配置中的 platform
    {name: 'PLATFORM_LINK', type: 'String', path: 'platform'},
    //把环境变量中的 BACKEND_LINK 赋值给系统配置中的对应驼峰形式的 backendLink
    {name: 'BACKEND_LINK', type: 'String'},
    //把环境变量中的 COMPANY_NAME 赋值给系统配置中 customAssets 的属性 companyName
    {name: 'COMPANY_NAME', type: 'String', path: 'customAssets.companyName'},
    //把环境变量中的 WATERMARK 解析成布尔类型,赋值给系统配置中 customAssets 的属性 watermark
    {name: 'WATERMARK', type: 'Bool', path: 'customAssets.watermark'},
    //把环境变量中的 LOG_DB 解析成一个对象,赋值给系统配置中的 logDatasource。keyMap = {database: 'title', host: 'host', port: 'port', user: 'user', password: 'password'} 在这里省略了因为 envParser 提供了对 LOG_DB 默认的 keyMap
    {name: 'LOG_DB', type: 'Json', path: 'logDatasource'},
    // 把环境变量中的 PAY_MODULES 解析成一个数组,并赋值给系统配置中的对应驼峰形式的 payModules
    {name: 'PAY_MODULES', type: 'Array'},
    // 把环境变量中的 STORE 解析成一个 store 对象,赋值给系统配置中的 ydStore。keyMap 在这里省略了因为 envParser 提供了对 LOG_DB 默认的 keyMap
    {name: 'STORE', type: 'Store', path: 'ydstore'},
    // 无法统一处理的配置,在这里的函数中进行自定义配置
    {
        name: '',
        type: 'Custom',
        fn:function (configJSON) {
             configJSON.from = _.get(configJSON, 'smtp.from') || configJSON.from;
        }
    }
]

参数说明

环境变量 配置参数 类型 含义 使用模块 备注
PLATFORM_LINK platform String 平台运行的地址 platform schedule backend survey website 供外部用户访问
PLATFORM platformInner String 平台运行的地址 platform schedule backend 供内部容器访问
BACKEND_LINK backendLink String backend 模块的外部域名 platform 5.8 版本以后可不配置,与 PLATFORM_LINK 公用同一个域名,根据 path 区分
SCHEDULE schedule String schedule 模块的调用地址 platform
INSIGHT insight String insight 模块的调用地址 platform
DE de String DE 模块的调用地址 platform
WEBSITE website String website 模块的调用地址 platform
SURVEY survey String survey 模块的调用地址 platform
DC dc String DC 模块的调用地址 platform
CAPTURE capture Json capture 模块的调用地址 schedule
CACHE_CAPTURE cacheCapture Json cacheCapture 模块的调用地址 schedule 用于执行 capture 的预加载任务
HA_COMPUTE haCompute String 高性能计算模块的调用地址 platform
COMPANY_NAME customAssets.companyName String 公司名 platform 系统左上角显示的公司名,默认是‘网易有数’;系统邮件中的发件人处也显示该变量内容
USER_LIMIT userLimit String 最大账号数量 platform
LOGIN_TYPE loginType String 用户登录方式 platform '':通过用户名密码的普通登录形式;'customLogin':企业单点登录;'openId':使用 openId 登录(单点登录的一种)
OPENID_SECRET_ID openId.secretId String 网易私有部署的域名的 secretId,用于单点登录 platform 只有 loginType = 'openId' 时才会使用
OPENID_CLIENT_ID openId.clientId String 网易私有部署的域名的 clientId,用于单点登录 platform 只有 loginType = 'openId' 时才会使用
PASS_KEY passKey String 各模块共有的一个秘钥 platform backend website schedule
PUBLIC_PATH customAssets.publicPath String 前端公共域名 platform
GLOBAL_LANGUAGE customAssets.globalLanguage String 全局语言 platform 默认中文 'zh-cn',可改为英文 'en',可以在 backend 中进行配置
DEPLOY_TYPE deployType String 部署类型 platform schedule backend survey website 'private':私有部署;'netease':内部环境 'online':线上环境
DEFAULT_USER_PWD defaultUserPwd String 默认的用户密码 platform
MOBILE_DEPLOYED mobileDeployed Bool 是否部署了移动端 app platform backend
WATERMARK customAssets.watermark Bool 是否开启报告界面的水印 platform 可以在 backend 中进行配置
OPEN_HUBBLE customAssets.openHubble Bool 是否在哈勃进行埋点 platform
PUSH_MAMMUT pushMammut Bool 是否调用猛犸接口 platform 若开启,数据产生变化时放入消息队列,猛犸数据准备好后通知有数,可执行预加载,需要部署 SyncExtract 模块
SQL_LOG sqlLog Bool 后台日志是否打印业务查询 SQL platform 可以在 backend 中进行配置
REDIS_LOG redisLog Bool 后台日志是否打印有关 redis 的日志 platform
LANGUAGE_SWITCH customAssets.languageSwitch Bool 用户是否可以切换自己的系统语言 platform 可以在 backend 中进行配置
HIDE_HELP_CENTER customAssets.hideHelpCenter Bool 是否需要隐藏帮助中心 platform 帮助中心是有数界面右上角的问号图标,其中包括新手引导、用户手册、常见问题等。可以在 backend 中进行配置
ENABLE_EMAIL enableEmail Bool 是否开启电子邮件服务 platform 开启的话需要配置邮箱服务 SMTP
ENABLE_MESSAGE enableMessage Bool 是否开启短信服务 platform 私有部署用户开启的话需要在 custom/customSMS.js 文件下进行外挂脚本适配开发,自己提供短信服务。可以在 backend 中进行配置
TR_INPUT_LOG trInputLog Bool 是否打印大屏 input 日志 platform 可以在 backend 中进行配置
NETWORK_ACCESS_ENABLE networkAccessEnable Bool 是否开启网络拦截 platform 开启后,具体的白名单需要在 backend 的设置中进行配置。网络拦截配置有两个选项:若选择 user,开启后只有在白名单中的 IP 才能访问有数,如果有某些特殊用户想使用非白名单 IP 来访问有数,需要调用 user/batchImport 接口修改用户 networkConfig 属性;若选择 mobile,开启后 web 端只有在 IP 白名单中才可以访问有数,移动端在非白名单中也可以访问有数。具体白名单和拦截类型如何配置请看 backend 的配置页面
PICTURE_NO_LINK smtp.pictureNoLink Bool 发送邮件是否带跳转连接 platform schedule backend 可以在 backend 中进行配置。
SERVICE_DOWNGRADE serviceDowngrade Bool 是否开启服务降级 schedule 开启后 schedule 中只有表单填写提醒邮件和 kill Chrome 会如期运行,其他任务将不再运行
PAY_MODULES payModules Array 用于指定用户购买的模块 platform 'report': 报告, 'mpp': mpp, 'cockpit': 驾驶仓, 'screen': 大屏, 'survey': 数据填报, 'gis': gis 地图
TR_INPUT_API_LIST trInputApiList Array 用于指定必须打日志的 API 列表 platform
LOG_DB logDatasource Json backend 查询的系统日志所存放的数据库的配置 backend 环境变量中配置成 mysql://<user>:<password>@<host>:<port>/<database> ,例 mysql://youdata:password@127.0.0.1:3306/youdata_log
REDIS redis Json redis 相关配置,用于缓存设置和存储 session 等 platform backend survey website 环境变量中配置成 redis://<password>@<host>:<port> ,例 redis://password@127.0.0.1:6379
CHROME chrome Json Chrome 相关的配置 capture 需包含 host、port 属性
DB datasource Json Platform 模块的数据库相关配置 platform schedule backend survey website 环境变量中配置成 mysql://<user>:<password>@<host>:<port>/<database> ,例 mysql://youdata:password@127.0.0.1:3306/youdata
SMTP smtp smtp 发邮件相关的配置 platform schedule backend 环境变量中配置成 smtp://<user>:<password>@<host>:<port>, 例 smtp://youdata@corp.netease.com:password@corp.netease.com:25。可以在 backend 中进行配置
STORE ydstore Store 对象存储服务的配置 platform schedule capture 环境变量中配置成 <protocol>://<user>:<password>@<host>:<port>/<bucket> ,例 minio://PJ99D7K3OAFS732PS1PZ:password@store.ydqa:80/yd-bucket

Webhook接口设计

Webhook

  • 需根据有数的规范,对每个添加的 webhook 地址,实现一个 get 请求接口和一个 post 请求接口。
  • Get 请求用于:有数验证 webhook 接口可用性。
  • Post 请求用于:有数调用进行消息推送。

配置 webhook 时的参数

  • name(String):webhook 的名字。
  • url(String):webhook 的请求地址。
  • secret(String):用于使 webhook 验证有数有效性。
  • type(String):webhook 类型,"warning"、"report"、"easyFetch"中的一个,分别表示"预警"、"定时推送"、"取数"。
  • custom(Object):用户自定义参数。有数调用 webhook 时会把它放在请求体 body 中一起传。

有数验证 webhook url 有效性

  • 有数在通过该验证后,才会把对应的 webhook 添加到有数中。Get 请求,url 为用户配置的 http(s)://host。
  • 请求地址及参数:
    • 请求地址:http(s)://host?timestamp=TIMESTAMP&nonce=NONCE&signature=SIGNATURE
    • timestamp(long):调用 webhook 时的时间戳
    • nonce(long):随机数
    • signature(String):先对 timestamp,nonce,secret 进行字典序排序后拼接成一个字符串,然后求 sha1 的结果。即 sha1(sort(timestamp,nonce,secret)) 。Webhook 端可根据该字段的值判断请求是否来自于有数(也可以不判断)。示例:
      long timestamp = 1583890769246;
      long nonce = 5111011325335330;
      String secret = "gzBDV9AMbGfHcf28";
      String sortedString = Arrays.sort([timestamp.toString, nonce.toString, secret]) = "15838907692465111011325335330gzBDV9AMbGfHcf28";
      String signature = sha1(sortedString) = "6460c444cf9df23a73717d16f7101199e79b8ec2";
  • 返回:
    • {"code":0,"msg":"ok"}
    • content-type:"application/json"
    • 有数使用 code == 0 来判断 webhook 是否有效。

有数调用 webhook

  • 当预警被触发,或者到了设置的定时任务时间,有数调用 webhook 进行消息推送。
  • Post 请求,url 为用户配置的 http(s)://host。

请求地址及参数:

  • 请求地址:http(s)://host?timestamp=TIMESTAMP&nonce=NONCE&signature=SIGNATURE 地址中携带的参数含义与上述一致,webhook 端可根据 signature 判断请求是否来自于有数(也可以不判断)。
  • Header
    • content-type: "application/json"
  • Body(Body 示例
参数名 参数类型 参数含义
custom Object 用户自定义参数。用户在配置 webhook 时输入
from String 推送 webhook 的事件名。anomalyDetection:指标移动分析,decisionEvent:决策引擎,exportExcelTask: 导出excel,measureWarning:度量预警,reportComment: 报告评论,reportMail: 报告邮件推送
receiverList List 接收人列表,每个域内接收人的属性有:id,name,phone,email,weChatId,dingTalkId;域外邮箱的属性有:id:-1,email;域外电话的属性有:id:-2,phone;取数推送到webhook没有该字段
msgType String “text”:文本,此时 data 中不存在 picture 相关信息。“picture”:图片,此时 data 中不存在 abstractDesc 字段。“picture-text”:图片+文本
data Object 预警或者报告的数据体,具体格式见 data 的数据格式

data的数据格式

  • 当配置 webhook 时的类型为"预警"(即 type == "warning")时:
    • 发送成功消息时,传除了 errMsg 之外的所有参数,
    • 发送失败消息时,传带星号的参数,
    • 消息类型取决于 msgStatus 字段。
参数名 参数类型 参数含义
msgStatus * String 消息类型,"success" 或者 "fail"
warningId * Int 触发的预警 id
warningName * String 触发的预警名称
componentId * String 预警所在图表的 id
componentName * String 预警所在图表的名称
dashboardId * Int 预警所在 dashboard 的 id
dashboardName * String 预警所在 dashboard 的名称
reportId * Int 预警所在报告的 id
reportName * String 预警所在报告的名称
projectId * Int 预警所在项目的 id
projectName * String 预警所在项目的名称
abstractDesc * String 触发的预警摘要,该字段简要说明触发了预警的数据
pictureBase64 String 预警对应图表截图使用 base64 编码后的结果
pictureMd5 String 预警对应图表截图使用 md5 编码后的结果
pictureName String 截图的名称,包括拓展名"jpeg"、"png"等
pictureSize Int 截图的大小,单位:字节
pictureLink String 截图的下载链接
coverPictureBase64 String 封面图 base64 编码后的结果
coverPictureMd5 String 封面图使用 md5 编码后的结果
coverPictureName String 封面图的名称,包括拓展名"jpeg"、"png"等
coverPictureSize Int 封面图的大小,单位:字节
coverPictureLink String 封面图的下载链接
warningLink * String 预警所在的 dashboard 的 url
flushTime * Long 数据刷新的时间戳
errMsg * String 出错原因及解决方式
  • 当配置 webhook 时的类型为"定时推送"(即 type == "reportMail")时:
    • 发送成功消息时,传除了 errMsg 之外的所有参数,
    • 发送失败消息时,传带星号的参数,
    • 消息类型取决于 msgStatus 字段。
参数名 参数类型 参数含义
msgStatus * String 消息类型,"success" 或者 "fail"
reportId * Int 报告的 id
reportName * String 报告的名称
projectId * Int 报告所在项目的 id
projectName * String 报告所在项目的名称
bodyDesc String 推送的正文内容
abstractDesc String 推送的签名内容
pictureBase64 String 报告截图使用 base64 编码后的结果
pictureMd5 String 报告截图使用 md5 编码后的结果,长度为 32 的字符串
pictureName String 截图的名称,包括拓展名"jpeg"、"png"等
pictureSize Int 截图的大小,单位:字节
pictureLink String 截图的下载链接
dashboardData Arr 数据表格内容,数组,包含页面id、组件名称、表格数据的二维数组,具体格式见 dashboardData 示例
attachmentLink String 附件的下载链接
coverPictureBase64 String 封面图 base64 编码后的结果
coverPictureMd5 String 封面图使用 md5 编码后的结果
coverPictureName String 封面图的名称,包括拓展名"jpeg"、"png"等
coverPictureSize Int 封面图的大小,单位:字节
coverPictureLink String 封面图的下载链接
reportLink * String 报告的 url
errMsg * String 出错原因及解决方式
  • 当配置 webhook 时的类型为"取数"(即 type == "easyFetch")时:
    • 发送成功消息时,传除了 errMsg 之外的所有参数,
    • 发送失败消息时,传带星号的参数,
    • 消息类型取决于 msgStatus 字段。
参数名 参数类型 参数含义
msgStatus * String 消息类型,"success" 或者 "fail"
schemaInfo Array 元数据信息,数组元素是对象{name: "列名",type: "字段类型"}
lineCount Int 文件的行数
viewerInfo * Object 表示数据来自的阅览者的信息,属性包括 id,uniqueId,phone,email
fileName String 文件名称,不包括拓展名,如"abc"
fileType String 文件类型,如"xlsx"、"csv"
downloadLink String 文件下载的链接。excel下载下来是个xlsx文件;csv下载下来是一个zip文件,解压后里面有一个csv
msgTag * String 唯一标识发送的执行结果
errMsg * String 出错原因及解决方式

输入示例

示例1
{
    "custom": {
      "robotUrl": "https://123.com/abc",
      "color":{
        "r":255,
        "g":0,
        "b":0
      }
    },
    "receiverList": [{
        "id": 1,
        "name": "小明",
        "phone": "13088888888",
        "email": "xiaoming@admin.com",
        "weChatId": "XiaoMing",
        "dingTalkId": "xiaoming"
    }, {
        "id": -1,
        "email": "xiaohong@admin.com"
    }, {
        "id": -2,
        "phone": "13066666666"
    }],
    "msgType": "picture-text",
    "data": {
        "msgStatus": "success",
        "warningId": 1,
        "warningName": "预警名称",
        "componentId": "c-1-128693-136413-k47wa7rj",
        "componentName": "图表名称",
        "dashboardId": 1,
        "dashboardName": "页面1",
        "reportId": 1,
        "reportName": "报告名称",
        "projectId": 1,
        "projectName": "项目名称",
        "abstractDesc": "东北销售额的求和为 10000,大于 100,触发预警,请及时查看",
        "pictureBase64": 'iVxIHEgcSBNuJAEvBt9DFSVRIHEgcSB1rJgSTgW8nNVFbiQOJA4kAbcSAJ+Db6GKkqiQOJA4kDreRAEvCt5GYqK3EgcSBxoI048F8SmkEYgmFzNwAAAABJRU5ErkJggg==',
        "pictureMd5":"7b4ed889dea0f24c3abee3bbf2b98607",
        "pictureName": "abc.png",
        "pictureSize": 512,
        "warningLink": "https://netease.youdata.163.com/dash/folder/1?rid=1&did=1",
        "flushTime": 1583829855276
    }
}
示例2
{
  "custom": {
    "emails": [
      "guochaotong@corp.netease.com"
    ]
  },
  "msgType": "easyFetchExport",
  "data": {
    "msgStatus": "success",
    "schemaInfo": [
      {
        "name": "姓名",
        "type": "String"
      },
      {
        "name": "学号",
        "type": "Whole"
      }
    ],
    "lineCount": 10,
    "fileName": "呃",
    "fileType": "xlsx",
    "downloadLink": "http://nos.netease.com/youdata-test/excel-export-1595407226435.xlsx?Expires=1596767368&NOSAccessKeyId=f3318b2c1f67409386bb99813a44c778&Signature=4lbioAJ4EF5M8In2DNF7jchDdDM3QEQW0Hm2enp%2FKso%3D&download=%E5%91%83.xlsx",
    "msgTag": "9d4f0ca6-5574-ef06-f329-69a1b144c12a",
    "errMsg": null,
    "viewerInfo": {
      "id": 11114,
      "uniqueId": "guochaotong@corp.netease.com",
      "phone": "13088888888",
      "email": "guochaotong@corp.netease.com"
    }
  }
}
dashboardData 示例

dashboardData 是数组,数组中的元素是对象。每个对象都包含 componentTitle、dashboardId、normalSheetData 三个属性。 其中,normalSheetData 是二维数组,数组第一项为表头,后面为数据。

[
    {
        "componentTitle": "折扣(按地区划分)",
        "dashboardId": 139357,
        "normalSheetData": [
            [
                "地区",
                "折扣"
            ],
            [
                "东北",
                "234.95"
            ],
            [
                "中南",
                "234.25"
            ],
            [
                "华东",
                "333.50"
            ],
            [
                "华北",
                "74.10"
            ],
            [
                "西北",
                "53.40"
            ],
            [
                "西南",
                "134.20"
            ]
        ]
    }
]

返回:

  • {"code":0,"msg":"ok"}
  • content-type:"application/json"
  • 有数使用 code == 0 来判断请求成功。无论成功与否,都可以在有数系统中查看 webhook 调用结果。