# 接口文档

# 一、基本介绍

本系统接口服务基于HTTPS 协议的API接口,返回数据为JSON 格式。使用接口不依赖于任何语言,使用非常方便简单。

接口通用URL: https://srm.api.rccchina.com/api/open/v1/

API接口验证方式:鉴权凭证验证

需要在请求头添加accessToken

请求头参数 是否必传 使用示例 含义
Access-Token "Access-Token: xxx" 请求头添加,然后接口需要进行验证token是否有效

# 前置条件

  • 使用方需要提前获取 appKeyappSecret(应用程序密钥,用户在购买慧讯网AI比价数据系统API服务时获得的唯一识别密钥)。
  • 使用方需要提前提供所使用的服务IP,慧讯网AI比价数据系统将会把IP地址添加到白名单中,以确保接口服务的安全性。

注意

  • appKeyappSecret需要使用方高度保密,切勿将其存储在客户端,以确保安全
  • 使用方应严格遵守慧讯网AI比价数据系统的服务协议,不得将appKeyappSecret泄露给任何第三方

# 二、通用返回格式

返回参数格式

名称 类型 说明
code Integer 表示执行的结果,成功会返回 10000,重要错误会返回负数。其他错误会返回小于10000的正整数。具体异常码见第五节
data Object 具体返回的真实数据,具体根据发送的请求不同而不同,详细信息请参考各自接口请求的定义。
created_at String 执行结果返回的时间戳
message String 返回结果的文字描述(仅供开发参考使用)真正执行结果是否正确,请参考 code 字段

# 三、接口对接验证介绍

# 接口验证方式

慧讯网AI比价数据系统为外部系统提供 appKey(应用标识,16位)、secretKey(应用密钥,32位)。
每个接口需先通过鉴权接口获取 accessToken(有效期24小时),然后在请求接口时需要在请求头携带 accessToken,接口提供方验证 accessToken的有效性,token有效则放行请求,反之则需要接口调用方重新生成 accessToken访问

# 接口鉴权流程

uml diagram

# 鉴权接口

示例-鉴权接口URL示例

GET https://srm.api.rccchina.com/api/open/v1/auth/get_access_token
1

接口路径/auth/get_access_token
请求方式GET

接口参数

名称 格式 是否必传 说明
appKey String ✔️ 应用标识
secretKeyDigest String ✔️ 应用密钥与时间戳通过 SHA256 加密生成(非对称加密)
timestamp 时间戳 ✔️ 当前时间戳(单位:毫秒,示例:1604545665400

生成secretKeyDigest的JavaScript代码示例

import sha256 from 'crypto-js/sha256';
sha256('应用密钥-时间戳').toString();
1
2

生成secretKeyDigest的Ruby代码示例

Digest::SHA256.hexdigest('应用密钥-时间戳')
1

生成secretKeyDigest的Java代码示例

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256Example {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        String input = "应用密钥-时间戳";
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        byte[] hash = md.digest(input.getBytes());
        StringBuffer sb = new StringBuffer();
        for (byte b : hash) {
            sb.append(String.format("%02x", b));
        }
        String result = sb.toString();
        System.out.println(result);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

返回参数
这里所描述的返回参数即通用返回格式中data字段的内容。如果是数组,那么就是数组内单个元素的返回字段。

名称 格式 说明
accessToken String 访问凭证,有效期24小时
expiresIn Integer 凭证有效时间(单位:秒)

示例响应参数

{
  "code": 10000,
  "data": {
    "accessToken": "xxx",
    "expiresIn": 86400
  },
  "created_at": "2025-04-06 17:52:45",
  "message": "success"
}
1
2
3
4
5
6
7
8
9

# 四、对外提供的API接口方法

# 1. 同步人员信息

接口说明
同步人员信息。

示例-同步人员信息URL示例

POST https://srm.api.rccchina.com/api/open/v1/org/update_account
1

接口路径
/org/update_account
请求方式
POST

请求参数

参数名称 格式 是否必传 说明
name String ✔️ 中文姓名
email String(邮箱格式) ✔️ 邮箱
phone String(11位手机号) ✔️ 手机号
status String ✔️ 状态:active(正常)、inactive(禁用)、leave(离职),默认 active
uuid String ✔️ 外部系统唯一标识(用于关联关系和单点登录)

示例请求参数

{
  "name": "张三",
  "email": "123@qq.com",
  "phone": "13800138000",
  "status": "active",
  "uuid": "user_123"
}
1
2
3
4
5
6
7

返回参数

这里所描述的返回参数即通用返回格式中data字段的内容。如果是数组,那么就是数组内单个元素的返回字段。

参数 类型 说明
syncHistoryId String|Integer 同步操作历史ID,用于后续查询

示例响应参数

{
  "code": 10000,
  "data": {
    "syncHistoryId": '1111'
  },
  "message": "success"
}
1
2
3
4
5
6
7

# 2. 批量同步组织结构信息

接口说明
批量同步组织架构信息,可以同步公司、部门、职位、人员信息。

示例-同步组织结构信息URL示例

POST https://srm.api.rccchina.com/api/open/v1/org/create_or_update_auth
1

接口路径/org/create_or_update_auth
请求方式POST

请求参数

根参数 orgInfo

参数名称 类型 必填 描述 约束
orgInfo Array ✔️ 数据集合 至少包含一个元素

对象字段说明

每个数组元素需包含以下字段:

参数名称 类型 必填 描述 约束
category String ✔️ 类型 允许值:firms/departments/job_titles/accounts
uuid String ✔️ 外部系统唯一标识
name String ✔️ 名称
parent_uuid String ✖️ 父级唯一标识 仅当存在父级时需填写

类型特定约束

  • category = job_titles 时:

    参数名称 类型 必填 描述
    department_uuid String ✔️ 外部系统部门唯一标识
  • category = accounts 时:

    参数名称 类型 必填 描述 约束
    email String ✔️ 邮箱 需符合邮箱格式正则校验
    phone String ✔️ 手机号 需符合11位手机号正则校验
    status String ✖️ 在职状态 默认值:active
    firm_uuid String ✔️ 所属公司唯一标识 当需关联公司时必填
    department_uuid String ✔️ 部门唯一标识 当需关联部门时必填
    job_title_uuid String ✔️ 职位唯一标识 当需关联职位时必填

示例请求参数:

{
  "orgInfo": [
    {
      "category": "firms",
      "uuid": "company_001",
      "name": "公司A"
    }, // 同步公司信息
    {
      "category": "departments",
      "uuid": "dept_002",
      "name": "部门A",
      "parent_uuid": "dept_001"
    }, // 同步部门信息
    {
      "category": "job_titles",
      "uuid": "job_003",
      "name": "职位A",
      "department_uuid": "dept_002"
    }, // 同步职位信息
    {
      "category": "accounts",
      "uuid": "user_123",
      "name": "张三",
      "email": "zhangsan@example.com",
      "phone": "13800138000",
      "job_title_uuid": "job_003",
      "firm_uuid": "company_001",
      "department_uuid": "dept_002"
    } // 同步人员信息
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

返回参数

这里所描述的返回参数即通用返回格式中data字段的内容。如果是数组,那么就是数组内单个元素的返回字段。

参数 类型 说明
syncHistoryId String|Integer 同步操作历史ID,用于后续查询

示例响应参数

{
  "code": 10000,
  "data": {
    "syncHistoryId": 1111
  },
  "message": "success"
}
1
2
3
4
5
6
7

# 3. 创建项目、设置或修改匹配条件

接口说明
创建项目、项目阶段、项目阶段的匹配条件、项目阶段的工作表,以便后续录入产品并匹配参考价格。

示例-同步组织结构信息URL示例

POST https://srm.api.rccchina.com/api/open/v1/audit/create_or_modify_project
1

接口路径/audit/create_or_modify_project
请求方式POST

请求参数

参数名称 类型 必填 说明
project_id String ✔️ 项目唯一标识
project_name String ✔️ 项目名称。若project_id不存在则新建项目,否则修改对应项目名称(不可为空)
stage String ✖️ 项目阶段名称,默认"预算阶段"。可选:预算阶段招标控制价阶段结算阶段其他
sheet String ✖️ 工作表名称,默认"材料设备清单"。若名称不存在则新建
scope Object ✖️ 搜索范围(若与已存条件不同,则触发重新搜索)

scope字段说明

参数名称 类型 必填 说明 约束
price_type String ✔️ 是否含税价,可选:含税不含税
area Array[String] ✖️ 首选地区(默认全国),可选值参考地区表 慧讯网按省份匹配,信息价按城市匹配
other_area Array[String] ✖️ 备选地区
start_at String ✖️ 价格发布时间范围下限(格式:YYYY-MM-DD HH:mm:ss
end_at String ✖️ 价格发布时间范围上限
brand_level String ✖️ 品牌档次,可选:全部高档中档普通(默认全部)
icc_price_type String ✖️ 慧讯网价格类型,可选:工程价市场价(默认工程价)
price_range_match Boolean ✖️ 是否开启价格范围匹配(默认false,若为true需填price_range_upprice_range_down
price_range_up Float ✖️ 价格匹配上限百分比(范围:0.0-200.0)
price_range_down Float ✖️ 价格匹配下限百分比
limit Integer ✖️ 每个价格渠道最多返回条数(可选1-5,默认5)

示例请求参数

{
  "project_id": "addefc19-0f0a-4b5d-ad24-e27b4ad9d0fd",
  "project_name": "上海市杨浦区精神卫生中心磁共振成像系统",
  "stage": "结算阶段",
  "sheet": "费用明细",
  "scope": {
    "price_type": "含税",
    "area": ["广东省", "广西省"],
    "other_area": ["江西省"],
    "start_at": "2024-06-01 00:00:00",
    "end_at": "2025-01-01 00:00:00",
    "brand_level": "普通",
    "icc_price_type": "市场价",
    "price_range_match": true,
    "price_range_up": 10.0,
    "price_range_down": 20.0,
    "limit": 3
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

示例响应参数

{
  "code": 10000,
  "message": "success",
  "data": {}
}
1
2
3
4
5

注意事项

  1. 项目阶段限制:一个项目最多支持4个阶段。
  2. 工作表逻辑:若sheet名称不存在,则新建工作表;若存在,则更新匹配条件。
  3. 搜索范围更新:修改scope中的任一参数会触发重新匹配。

# 4. 提交待匹配信息

接口说明
将材料加入匹配队列(仅提交不返回即时结果)。

示例-提交待匹配信息URL示例

POST https://srm.api.rccchina.com/api/open/v1/audit/match_products
1

接口路径/audit/match_products
请求方式POST

请求参数

参数名称 类型 必填 说明
project_id String ✔️ 项目唯一标识
stage String ✖️ 项目阶段名称(默认“预算阶段”)
sheet String ✖️ 工作表名称(默认“材料设备清单”)
products Array[Object] ✔️ 产品数据集合(至少1个元素)

products字段说明

参数名称 类型 必填 说明 约束
uuid String ✔️ 产品唯一标识(最长32位UUID)
name String ✔️ 产品全称
channel Array[String] ✖️ 渠道,可选:慧讯网信息价中标价(默认全选)
spec String ✖️ 规格型号
brand String ✖️ 品牌
unit String ✖️ 计量单位
price_with_tax Float ✖️ 含税单价(保留两位小数)
price_without_tax Float ✖️ 不含税单价(保留两位小数)
amount Float ✖️ 采购/使用数量
remark String ✖️ 其他说明

示例请求参数

{
  "project_id": "addefc19-0f0a-4b5d-ad24-e27b4ad9d0fd",
  "stage": "结算阶段",
  "sheet": "费用明细",
  "products": [
    {
      "uuid": "5f4d3b2a-1e0f-4a3c-9b8d-6e7f8a9b0c1d",
      "name": "PVC电工套管",
      "channel": ["慧讯网", "信息价", "中标价"],
      "spec": "Φ20mm",
      "brand": "联塑",
      "unit": "米",
      "price_with_tax": 4.5,
      "price_without_tax": 3.5,
      "amount": 100.0,
      "remark": "家庭装修"
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

示例响应参数

{
  "code": 10000,
  "message": "success",
  "data": {}
}
1
2
3
4
5

# 5. 获取匹配结果

接口说明
查询材料匹配结果(包含慧讯网价格、信息价、政府中标价等数据)。需等待5-30分钟处理时间。

A类数据、B类数据有不同限制,可在调用接口时指定返回哪一类数据。A类数据、B类数据的区别,详见下方响应结果的说明。

示例-获取匹配结果URL示例

POST https://srm.api.rccchina.com/api/open/v1/audit/get_products_result
1

接口路径/audit/get_products_result
请求方式POST

请求参数

参数名称 类型 必填 描述 约束
uuids Array[String] ✔️ 需要查询的产品UUID列表 最多同时查询100个
extended Boolean ✖️ 是否需要返回B类数据(默认false) B类数据会返回额外的信息,也有一套单独的限制

示例请求参数

{
  "uuids": [
    "5f4d3b2a-1e0f-4a3c-9b8d-6e7f8a9b0c1d",
    "8a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d"
  ]
}
1
2
3
4
5
6

响应结果
data.list字段说明:

参数名称 类型 说明
id String 请求参数中的 UUID
name String 产品全称(来自 /api/open/v1/audit/match_products 接口保存的值)
spec String 规格型号(来自 /api/open/v1/audit/match_products 接口保存的值)
unit String 单位(来自 /api/open/v1/audit/match_products 接口保存的值)
brand String 品牌(来自 /api/open/v1/audit/match_products 接口保存的值)
remark String 其他说明(来自 /api/open/v1/audit/match_products 接口保存的值)
price_with_tax Float 含税单价(保留两位小数,来自匹配接口保存的值)
price_without_tax Float 不含税单价(保留两位小数,来自匹配接口保存的值)
amount Float 数量(来自 /api/open/v1/audit/match_products 接口保存的值)
icc_price Object 慧讯网价格(仅当 channel 含“慧讯网”时返回)
inf_price Object 信息价(仅当 channel 含“信息价”时返回)
gov_price Object 中标价(仅当 channel 含“中标价”时返回)

# icc_price 字段说明

参数名称 类型 说明
progress String 匹配进度:fresh(未开始)、pending(匹配中)、found(匹配到)、nothing(无结果)
avg_price Float 平均价格(保留两位小数)
samples Array[Object] 匹配结果(最多返回 scope.limit 条)

samples 字段说明

参数名称 类型 说明 是否B类数据
name String 产品全称 ✖️
spec String 规格型号 ✖️
brand String 品牌 ✖️
area String 地区 ✖️
price Float 价格(保留两位小数) ✖️
publish_date Date 发布日期 ✖️
with_carriage Boolean 是否含运费 ✖️
with_tax Boolean 是否含税 ✖️
tax Float 税率 ✖️
link String 慧讯网AI比价数据系统网页链接 ✖️
firm_name String 供应商名称 ✔️
contacts Array[Object] 联系人 ✔️
screenshot String 慧讯网截图文件地址 ✔️
quotation String 报价单文件地址 ✔️

# inf_price 字段说明

参数名称 类型 说明
progress String 匹配进度:fresh(未开始)、pending(匹配中)、found(匹配到)、nothing(无结果)
avg_price Float 平均价格(保留两位小数)
samples Array[Object] 匹配结果(最多返回 scope.limit 条)

samples 字段说明

参数名称 类型 说明 是否B类数据
name String 产品全称 ✖️
spec String 规格型号 ✖️
area String 地区 ✖️
price Float 价格(保留两位小数) ✖️
link String 慧讯网AI比价数据系统网页链接 ✖️
publish_date Date 发布日期 ✖️

# gov_price 字段说明

参数名称 类型 说明
progress String 匹配进度:fresh(未开始)、pending(匹配中)、found(匹配到)、nothing(无结果)
avg_price Float 平均价格(保留两位小数)
samples Array[Object] 匹配结果(最多返回 scope.limit 条)

samples 字段说明

参数名称 类型 说明 是否B类数据
name String 产品全称 ✖️
spec String 规格型号 ✖️
brand String 品牌 ✖️
area String 地区 ✖️
price Float 价格(保留两位小数) ✖️
link String 慧讯网AI比价数据系统网页链接 ✖️
publish_date Date 公告发布日期 ✖️
announcement_name String 公告名称 ✔️
firm_name String 中标公司名称 ✔️
screenshot String 截图 ✔️

# 示例响应参数

{
  "code": 10000,
  "message": "success",
  "data": {
    "list": [
      {
        "id": "5f4d3b2a-1e0f-4a3c-9b8d-6e7f8a9b0c1d",
        "name": "PVC电工套管",
        "spec": "Φ20mm",
        "unit": "米",
        "brand": "联塑",
        "remark": "家庭装修",
        "price_with_tax": "4.5",
        "price_without_tax": "3.5",
        "amount": "100.0",
        "icc_price": {
          "progress": "found",
          "avg_price": "4.51",
          "samples": [
            {
              "name": "PVC电工套管",
              "spec": "Φ20mm",
              "brand": "联塑",
              "area": "北京",
              "price": "4.51",
              "publish_date": "2024-01-01",
              "with_carriage": true,
              "with_tax": true,
              "tax": "0.1",
              "link": "",
              "firm_name": "瑞达恒",
              "screenshot": "",
              "quotation": "",
              "contacts": [
                {
                  "email": "123@qq.com"
                  "name": "张三",
                  "phones": ["13888888888"],
                }
              ],
            }
          ]
        },
        "inf_price": {
          "progress": "found",
          "avg_price": "4.51",
          "samples": [
            {
              "name": "PVC电工套管",
              "spec": "Φ20mm",
              "area": "北京",
              "price": "4.51",
              "link": ""
            }
          ]
        },
        "gov_price": {
          "progress": "found",
          "avg_price": "4.51",
          "samples": [
            {
              "name": "PVC电工套管",
              "spec": "Φ20mm",
              "brand": "联塑",
              "area": "北京",
              "price": "4.51",
              "link": "",
              "announcement_name": "中标公告",
              "firm_name": "瑞达恒",
              "screenshot": ""
            }
          ]
        }
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

注意事项

  • 匹配队列处理需5-15分钟,请勿即时查询结果
  • 价格字段单位为人民币元,保留两位小数
  • 单次请求最多查询100个UUID

# 五、通用接口响应码介绍

分类 示例值 描述
正常的响应码 10000 接口成功响应
影响严重的错误码 -999 系统异常
-4 传递的token为空
接口调用校验失败的异常码 129 应用密钥标识编码错误
127 该用户个人账号标识有误/未在系统找到当前个人账号
126 token有误或已过期
125 应用密钥标识有误
124 用户账号不存在
611 使用量已达到上限

# 六、安全限制说明

为保障数据安全,以上接口调用会有以下安全措施:

1.仅限允许白名单内IP访问(需要联系客服添加);

2.每分钟内调用接口次数不得超过20次;

3.每日获取产品数据不超过5000条(同一产品不重复计算);

4.定期更换应用secretKey,并使用文档中约定安全验证方式进行访问。

如未遵循以上说明,会被屏蔽访问或锁定账号,如有疑问请随时联系您的售后服务人员。