外观
关联关系挖掘接口文档
1. API 通用说明
1.1 公共请求参数
| 参数名称 | 类型 | 必选 | 参数类型 | 参数说明 |
|---|---|---|---|---|
| apikey | string | 是 | header | 接口请求令牌 |
| data | string | 是 | body | 请求参数数据体 |
| timestamp | string | 是 | body | 时间戳 |
参数示例
json
{
"data": "",
"timestamp": 0
}1.2 公共返回参数
| 参数名称 | 类型 | 参数说明 |
|---|---|---|
| data | string | 响应数据体 |
| status | integer | 状态码 |
| message | string | 返回消息 |
参数示例
json
{
"status": 200,
"data": "",
"message": ""
}1.3 接口状态码
| 状态码 | 错误描述 |
|---|---|
| 200 | 成功! |
| 211 | 无记录 |
| 99101 | 输入参数错误 |
| 99109 | 验证不通过 |
| 99001 | 请传输参数 apikey |
| 99004 | 没有使用该接口权限 |
| 99005 | IP 受限 |
| 99006 | 请求次数达到限制 |
| 99999 | 系统出现异常 |
1.4 API 接口列表
- 域名根路径:
https://api.daokoujinke.com/apis/ent/
| 接口 | 请求方法 | URL | 接口说明 |
|---|---|---|---|
| 关联排查 - 群组查询 | POST | /company/relation/query/group | 发现群组企业之间的关联关系 |
| 关联排查 - 一对多查询 | POST | /company/relation/query/one2many | 发现一个指定企业/个人与多个企业之间的关联关系 |
| 关联排查 - 关联详情 | POST | /company/relation/detail/advanced | 返回两个关联企业的所有关联路径 |
| 疑似关联企业 | POST | /company/relation/suspected | 返回指定入参企业的所有疑似关联企业 |
| 疑似关联评分 | POST | /company/relation/score | 返回两个疑似关联企业的关联得分 |
2. API 详细说明
2.1 关联排查 - 群组查询
- 接口地址:
https://api.daokoujinke.com/apis/ent/company/relation/query/group - 请求方法: POST
- 返回格式: JSON
- Content-Type:
application/json;charset=UTF-8 - 接口说明: 发现群组企业之间的关联关系
请求参数
| 参数名称 | 类型 | 必选 | 参数说明 |
|---|---|---|---|
| nodeIds | JSONArray<String> | 是 | 起始企业名称或者统一社会信用代码,支持混合传入 |
| filters | JSONObject | 是 | 过滤条件 |
请求示例
json
{
"nodeIds": [
"914404001927878256N",
"xxxx有限公司",
"xxxx科技发展公司",
"xxxx集团",
"xxxxx传媒有限公司",
"xxxx科技有限公司"
],
"filters": {
"rules": [
{
"logic": "and",
"type": "sh",
"conditions": [
{
"name": "stock_ratio",
"computation": {
"type": "number",
"value": 0.001,
"operator": "gte"
}
}
]
},
{
"type": "tm"
}
]
}
}返回结果说明
| 参数名 | 类型 | 备注 |
|---|---|---|
| suggestedMatches | Array | 返回的是库里匹配不到的企业,一般是企业名称错误导致的 |
| relatedParties | Array | 返回有关系的多方企业名称 |
| notExist | Object | 不在用例库中的数据 |
suggestedMatches 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| inputName | string | 用户输入的企业名称 |
| matchedName | string | 系统能匹配到的类似的企业名称 |
| matchedId | string | 类似企业的唯一标识 |
notExist 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| nodeIds | Array | 不在库中企业数据 |
返回结果示例
json
{
"status": 200,
"message": "成功",
"data": {
"suggestedMatches": [
{
"matchedName": "xxxx有限公司北京分公司",
"matchedId": "123123123123123123",
"inputName": "xxxx有限公司"
}
],
"relatedParties": [
{
"relations": [
"xxxx集团",
"xxxx科技有限公司"
]
}
],
"notExist": {
"nodeIds": [
"xxxx科技发展公司",
"xxxxx传媒有限公司"
]
}
}
}2.2 关联排查 - 一对多查询
- 接口地址:
https://api.daokoujinke.com/apis/ent/company/relation/query/one2many - 请求方法: POST
- 返回格式: JSON
- Content-Type:
application/json;charset=UTF-8 - 接口说明: 发现一个指定企业/个人与多个企业之间的关联关系
请求参数
| 参数名称 | 类型 | 必选 | 参数说明 |
|---|---|---|---|
| startType | string | 是 | 起点主体类型,枚举值:"org"(企业)或 "person"(自然人) |
| startId | string | 是 | 起点主体名称,传入企业全称或自然人姓名 |
| endIds | JSONArray | 是 | 目标主体名称列表,最多支持 50 个 |
| filters | JSONObject | 否 | 关联关系过滤规则(如关系类型、时间范围、持股比例等) |
targetNames 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| type | string | 主体类型,枚举值:"org"(企业)或 "person"(自然人) |
| name | string | 主体名称 |
请求示例
json
{
"startType": "org",
"startId": "xxxxx传媒有限公司",
"endIds": [
{
"type": "org",
"id": "xxxxx有限责任公司"
},
{
"type": "org",
"id": "xxxxx分公司"
},
{
"type": "org",
"id": "xxxxx科技发展有限公司"
}
],
"filters": {
"rules": [
{
"logic": "and",
"type": "sh",
"conditions": [
{
"name": "stock_ratio",
"computation": {
"type": "number",
"value": 0.001,
"operator": "gte"
}
}
]
},
{
"type": "tm"
}
]
}
}返回结果说明
| 参数名 | 类型 | 备注 |
|---|---|---|
| suggestedMatches | Array | 返回的是库里匹配不到的企业,一般是企业名称错误导致的 |
| relatedParties | Array | 返回有关系的多方企业名称 |
| notExist | Object | 不在用例库中的数据 |
relatedParties 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| relations | Array | 返回有关系的多方企业名称 |
返回结果示例
json
{
"status": 200,
"message": "成功",
"data": {
"suggestedMatches": [
{
"matchedName": "xxxxx有限责任公司北京分公司",
"matchedId": "202367312jk234hg123kh",
"inputName": "xxxxx有限责任公司"
}
],
"notExist": {
"sourceId": "3736125jdhawgqwjqgh",
"sourceType": "org",
"targetNames": [
{
"id": "123712613256218hdgeqwqweq",
"type": "org"
},
{
"id": "2025837363623jhsgsfgssggf",
"type": "org"
}
]
},
"relatedParties": [
"xxxxx科技发展有限公司"
]
}
}2.3 关联排查 - 关联详情
- 接口地址:
https://api.daokoujinke.com/apis/ent/company/relation/detail/advanced - 请求方法: POST
- 返回格式: JSON
- Content-Type:
application/json;charset=UTF-8 - 接口说明: 返回两个关联企业的所有关联路径
请求参数
| 参数名称 | 类型 | 必选 | 参数说明 |
|---|---|---|---|
| startId | string | 是 | 起始企业,企业全称或统一社会信用代码 |
| endId | string | 是 | 目标企业,企业全称或统一社会信用代码 |
| degree | Integer | 否 | 最大关联度数,取值范围 1~15,默认为 6 |
| ruleList | JSONArray | 否 | 关联关系过滤规则 |
请求示例
json
{
"startId": "xxxxxxx有限公司",
"endId": "xxxxxx有限公司",
"degree": 1,
"ruleList": "[{\"type\":\"tm\",\"conditionList\":[]},{\"type\":\"sh\",\"conditionList\":[{\"name\":\"invest_rate\",\"type\":\"string\",\"op\":\"gte\",\"value\":\"0.0100\"}]}]"
}注意:
ruleList在实际请求中为字符串格式的 JSON 数组(如上所示),但在逻辑解析时按对象数组处理。
Java 参数参考
java
@Data
public class QueryReq {
/**
* 规则列表
*/
private List<Rule> ruleList;
@Data
private static class Rule {
/**
* 可选值,and / or
* 用来指定 conditionList里的条件是用且逻辑还是或逻辑
* 比如对于 weak弱关联类型,可以用 or 来查询 地址、邮箱、电话、疑似
* 对于 sh股东关联类型可以用 and 来查询 持股比例 > xx值 且 持股比例 <xx值
* 如果 conditionList里的元素不是明确要使用 or 处理,其他情况都是取 and 值
*/
private String op;
/**
* 对某一个边使用的条件
*/
private List<Condition> conditionList;
/**
* 边类型
* 同一个边类型在 ruleList数组里只能出现一次,参考下面 json 的 "type": "weak"
*/
private String type;
}
@Data
private static class Condition {
/**
* 比较值,比如 eq,gt, lt 等
*/
private String op;
/**
* 边属性名 name,参考下面表格
*/
private String name;
/**
* 值类型,比如 string,参考下面表格
*/
private String type;
/**
* 取值,参考下面表格
*/
private String value;
}
}使用说明
ruleList是数组,每个元素是对一种边类型(type)条件的描述,同一个边类型在数组里只能出现一次。- 与
conditionList同层次的op属性,表示conditionList里的条件的判断逻辑,可取值and或or。 conditionList下每个条件Condition的op表示比较符号,取值如下:
| 操作符 | 含义 |
|---|---|
| eq | 等于 |
| gte | 大于等于 |
| lte | 小于等于 |
| gt | 大于 |
| lt | 小于 |
关联条件表
| 关联类型 | type | 过滤字段 | 边属性名 | 取值 (value) | type (值类型) |
|---|---|---|---|---|---|
| 股东 | sh | 持股比例 | invest_rate | [0.0, 1.0] | string |
| 历史股东 | sh_his | 离职时间 | end_date | yyyy-MM-dd | string |
| 持股比例 | invest_rate | [0.0, 1.0] | string | ||
| 高管 | tm | — | — | — | — |
| 历史高管 | tm_his | 离职时间 | end_date | yyyy-MM-dd | string |
| 法人 | lp | — | — | — | — |
| 历史法人 | lp_his | 离职时间 | end_date | yyyy-MM-dd | string |
| 实际受控人 | act | 持股比例 | invest_rate | [0.0, 1.0] | string |
| 分支机构 | branches | — | — | — | — |
| 年报披露关联企业 | annual_related | 开始时间 | pub_date | yyyy-MM-dd | string |
| 应收关系 | receive | — | — | — | — |
| 应付关系 | pay | — | — | — | — |
| 担保 | assure | — | — | — | — |
| 客户 | cu | 结束时间 | end_date | yyyy-MM-dd | string |
| 供应商 | su | 结束时间 | end_date | yyyy-MM-dd | string |
| 司法诉讼 | lawsuit | — | — | — | — |
| 招投标 | bidding | — | — | — | — |
| 疑似关联 | weak | 弱关联 | weak_type | susp | string |
| 邮箱关联 | weak | 弱关联 | weak_type | string | |
| 电话关联 | weak | 弱关联 | weak_type | tel | string |
| 地址关联 | weak | 弱关联 | weak_type | addr | string |
返回结果说明
| 参数名 | 类型 | 备注 |
|---|---|---|
| maxPathCount | Integer | 最大返回路径数 |
| returnedPathCount | Integer | 实际返回路径数 |
| deduplicatedPathCount | Integer | 去重后路径数 |
| totalPathCount | Integer | 符合条件的总路径数 |
| maxPathHops | Integer | 最大跳数 |
| minPathHops | Integer | 最小跳数 |
| paths | JSONArray | 关联路径列表 |
| graphData | JSONObject | 图数据结构 |
paths 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| relationTypes | Array<String> | 关系类型列表 |
| nodeIds | Array<String> | 节点 ID 列表 |
| pathLength | Integer | 路径长度 |
| pathRelevanceScore | Float | 路径相关性得分 |
| pathDescription | String | 路径可读描述 |
| relations | Array<Object> | 路径中的关系 |
graphData 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| entities | Array<Object> | 实体节点列表 |
| relations | Array<Object> | 关系边列表 |
entities 子项
| 参数名 | 类型 | 备注 |
|---|---|---|
| entityName | String | 实体名称 |
| entityType | String | 实体类型 |
| entityId | String | 实体 ID |
relations 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| fromNodeId | String | 关系起点 |
| toNodeId | String | 关系终点 |
| relationName | String | 关系显示名称 |
| relationType | String | 关系类型 |
| equityRatio | BigDecimal | 持股比例 |
| relevanceScore | BigDecimal | 该关系的权重 |
| holderCategory | String | 股东类别 |
| weakRelationType | String | 弱关联类型(仅 weak 有效) |
| weakRelationName | String | 弱关联名称(仅 weak 有效) |
| direction | Integer | 方向标识:1 表示 from → to |
返回结果示例
json
{
"status": 200,
"message": "成功",
"data": {
"maxPathCount": 10,
"returnedPathCount": 2,
"deduplicatedPathCount": 2,
"totalPathCount": 2,
"maxPathHops": 1,
"minPathHops": 1,
"paths": [
{
"relationTypes": ["sh"],
"nodeIds": ["2011d8ad4b84c0103644870526342079", "201116c92c5942327840210512822797"],
"pathLength": 1,
"relations": [
{
"fromNodeId": "201116c92c5942327840210512822797",
"relationName": "股东(持股33.33%)",
"relationType": "sh",
"equityRatio": 0.33333301544189453,
"relevanceScore": 0.33333301544189453,
"toNodeId": "2011d8ad4b84c0103644870526342079",
"holderCategory": "企业",
"direction": 1
}
],
"pathRelevanceScore": 0.8,
"pathDescription": "xxxx计算有限公司<-xxxx(北京)有限公司"
},
{
"relationTypes": ["lawsuit"],
"nodeIds": ["2011d8ad4b84c0103644870526342079", "201116c92c5942327840210512822797"],
"pathLength": 1,
"relations": [
{
"fromNodeId": "201116c92c5942327840210512822797",
"weakRelationType": null,
"weakRelationName": null,
"relationName": "诉讼",
"relationType": "lawsuit",
"equityRatio": 0,
"relevanceScore": 0,
"toNodeId": "2011d8ad4b84c0103644870526342079",
"holderCategory": null,
"direction": 1
}
],
"pathRelevanceScore": 0.1,
"pathDescription": "xxxxx计算有限公司<-xxxxxx(北京)有限公司"
}
],
"graphData": {
"entities": [
{
"entityName": "xxxxxx(北京)有限公司",
"entityType": "org",
"entityId": "201116c92c5942327840210512822797"
},
{
"entityName": "xxxxx计算有限公司",
"entityType": "org",
"entityId": "2011d8ad4b84c0103644870526342079"
}
],
"relations": [
{
"fromNodeId": "201116c92c5942327840210512822797",
"weakRelationType": null,
"weakRelationName": null,
"relationName": "诉讼",
"relationType": "lawsuit",
"equityRatio": 0,
"relevanceScore": 0,
"toNodeId": "2011d8ad4b84c0103644870526342079",
"holderCategory": null,
"direction": 1
},
{
"fromNodeId": "201116c92c5942327840210512822797",
"relationName": "股东(持股33.33%)",
"relationType": "sh",
"equityRatio": 0.33333301544189453,
"relevanceScore": 0.33333301544189453,
"toNodeId": "2011d8ad4b84c0103644870526342079",
"holderCategory": "企业",
"direction": 1
}
]
}
}
}2.4 疑似关联企业
- 接口地址:
https://api.daokoujinke.com/apis/ent/company/relation/suspected - 请求方法: POST
- 返回格式: JSON
- Content-Type:
application/json;charset=UTF-8 - 接口说明: 返回指定入参企业的所有疑似关联企业
请求参数
| 参数名称 | 类型 | 必选 | 参数说明 |
|---|---|---|---|
| ucCode | string | 否 | 企业的统一社会信用代码 |
| orgName | string | 是 | 企业名称 |
请求示例
json
{
"orgName": "xxxxxx有限公司",
"ucCode": ""
}返回结果说明
| 参数名 | 类型 | 备注 |
|---|---|---|
| industryName | string | 行业 |
| legalRepresentative | string | 法定代表人 |
| companyType | string | 企业类型 |
| establishmentDate | string | 成立日期 |
| companyStatus | string | 企业经营状态 |
| suspectedRelatedCompanies | Array | 疑似关联的公司列表 |
suspectedRelatedCompanies 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| companyName | string | 关联公司名称 |
| relationType | string | 关联类型 |
| creditCode | string | 统一社会信用代码 |
| relationEvidence | string | 关联依据 |
返回结果示例
json
{
"status": 200,
"message": "成功",
"data": {
"industryName": "其他互联网平台",
"legalRepresentative": "刘延峰",
"suspectedRelatedCompanies": [
{
"relationType": "疑似关联",
"creditCode": "111011DSfdsfsdf",
"relationEvidence": "电话",
"companyName": "xxxxxxxx文化传媒有限公司"
},
{
"relationType": "疑似关联",
"creditCode": "9111011dsaqwdads",
"relationEvidence": "电话",
"companyName": "xxxxxx科技有限公司"
},
{
"relationType": "疑似关联",
"creditCode": "9111011635sqweqweqw",
"relationEvidence": "电话",
"companyName": "xxxxxxx传媒有限公司"
},
{
"relationType": "疑似关联",
"creditCode": "9112011cvcsfews",
"relationEvidence": "电话",
"companyName": "xxxxxx传媒有限公司上海分公司"
}
],
"companyType": "其他有限责任公司",
"establishmentDate": "2014-07-01",
"companyStatus": "存续"
}
}2.5 疑似关联评分
- 接口地址:
https://api.daokoujinke.com/apis/ent/company/relation/score - 请求方法: POST
- 返回格式: JSON
- Content-Type:
application/json;charset=UTF-8 - 接口说明: 返回两个疑似关联企业的关联得分
请求参数
| 参数名称 | 类型 | 必选 | 参数说明 |
|---|---|---|---|
| keyWord1 | string | 是 | 企业名称 |
| keyWord2 | string | 是 | 企业名称 |
请求示例
json
{
"keyWord1": "xxxxxx集团有限公司",
"keyWord2": "xxxxxxx有限公司"
}返回结果说明
| 参数名 | 类型 | 备注 |
|---|---|---|
| score | string | 关联分数 |
| company1 | Object | 企业信息 1 |
| company2 | Object | 企业信息 2 |
company1/company2 数据项结构
| 参数名 | 类型 | 备注 |
|---|---|---|
| entName | string | 企业名称 |
| creditNo | string | 统一社会信用代码 |
返回结果示例
json
{
"status": 200,
"message": "成功",
"data": {
"score": "0.0",
"company1": {
"entName": "xxxxxx集团有限公司",
"creditNo": null
},
"company2": {
"entName": "xxxxxxx有限公司",
"creditNo": null
}
}
}3. filters 的 JSON 格式描述
| 边类型 (type) | 关系类型 | 过滤字段 | 字段类型 | 取值范围 |
|---|---|---|---|---|
| susp | 疑似关联 | 无 | 无 | |
| 邮箱关联 | 无 | 无 | ||
| tel | 电话关联 | 无 | 无 | |
| addr | 地址关联 | 无 | 无 | |
| sh | 股东 | stock_ratio | number | [0.0, 1.0] |
| sh_deep | 股权穿透 | stock_ratio | number | [0.0, 1.0] |
| act | 实控人 | stock_ratio | number | [0.0, 1.0] |
| tm | 高管 | 无 | 无 | |
| lp | 法人 | 无 | 无 | |
| tm_his | 历史高管 | end_date | string | yyyy-MM-dd |
| lp_his | 历史法人 | end_date | string | yyyy-MM-dd |
| sh_his | 历史股东 | end_date | string | yyyy-MM-dd |
| branches | 分支机构 | 无 | 无 | |
| receive | 应收关系 | 无 | 无 | |
| assure | 担保 | 无 | 无 | |
| annual_related | 年报披露关联企业 | pub_date | string | yyyy-MM-dd |
| cu | 客户 | pub_date | string | yyyy-MM-dd |
| su | 供应商 | pub_date | string | yyyy-MM-dd |
| pay | 应付关系 | 无 | 无 |