获取AI内容安全审核接口返回的标签信息，客户可以通过轮询调用该接口获取数据。

## 接口说明

该接口支持客户获取易盾AI内容安全审核的通用标签信息，也可通过指定clientId、businessId等参数，获取客户账号或业务下的私有标签信息。建议客户定期获取更新标签信息。

### 接口耗时

结果获取接口的响应很快，正常100ms内返回结果，业务方根据需求适当调整超时时间，建议为1s

## 请求

### 请求地址

| 名称        | 值                                                |
| ----------- | ------------------------------------------------- |
| HTTP URL    | [https://openapi.dun.163.com/openapi/v2/antispam/label/query]() |
| HTTP Method | GET                                              |

### 请求头

| 名称         | 类型   | 必填 | 描述                                        |
| ------------ | ------ | ---- | ------------------------------------------- |
| X-YD-SECRETID | String | 是   | 商户账号级密钥，对应客户账号级秘钥-AccessKey ID，非产品级密钥， [获取账号级密钥点此，可在页面自行创建](https://dun.163.com/dashboard?v=0116&locale=zh-CN#/m/user/access-key/) |
| X-YD-TIMESTAMP | String | 是   | 请求当前 UNIX 时间戳，单位毫秒，请注意服务器时间是否同步 |
| X-YD-NONCE | String | 是   | 随机整数，与 timestamp 联合起来，用于防止重放攻击 |
| X-YD-SIGN | String | 是   | 采用sha1进行签名，验签内容: 请求的body请求串+ AccessKeySecret + timstamp + nonce 进行 |

#### OPENAPI签名说明
流程说明：
用户在访问易盾的 OpenAPI 时，都需要对发送到易盾的 HTTP 请求进行签名，以便于易盾能够识别发送请求的用户。需要使用访问密钥来对请求进行签名，访问密钥由易盾颁发的AccessKey ID和AccessKey Secret 组成，具体的签名步骤参见文档。

#### 签名获取说明
对所有请求参数(包括所有私有参数) ,按照参数名ASCII码表升序顺序排序。如: foo=1, bar=2, foo_bar=3, baz=4排序后的顺序是bar=2, baz=4, foo=1, foobar=3。将排序好的参数名和参数值构造成字符串，格式为： key1+value1+key2+value2...。根据上面的示例得到的构造结果为： bar2baz4foo1foobar3。将上述构成的私有参数字符串后追加AccessKeySecret, Nonce, Timestamp,组成加密原始数据,结果为: bar2baz4foo1foobar3{AccessKeySecret)(Nonce){Timestamp)(大括号表示占位符,实际处理时请移除) 采用SHA1散列算法构成的原始数据进行加密返回。具体示例，请参见下方DEMO示例。

### 请求参数

当以下参数都不传值时，则默认获取易盾通用全业务类型的一级和二级标签内容


| 名称      | 类型   | 必填 | 最大长度 | 描述                                                       |
| --------- | ------ | ---- | -------- | ---------------------------------------------------------- |
| clientId   | String | 否   | 32        | 客户ID(CID)（海外账号需在CID前补充前缀：东南亚sa. 、北美na. 、欧洲ep.），请联系您的易盾策略经理获取。 <br><br>传入clientId：返回默认所有通用标签+所有客户级和客户下所有业务级私有标签； <br>传clientId+businessId：返回默认所有通用标签+所有客户级私有标签和businessId的业务级私有标签|
| businessId    | String | 否  | 11       | 业务ID，查询businessId的业务级私有标签；返回默认所有通用标签+指定业务级私有标签|
| businessTypes | String[] | 否   | 11    | 业务类型，文本-100，图片-200，视频-300，音频-400。多个业务类型之间用,分隔，不传则查所有分类  |
| maxDepth   | Number | 否  | 11       | 最大标签层级，默认只返回到2级，最大支持到3级 |
| language  | String | 否  | 11       | 对应语种的标签名，会根据这个传入语种匹配到对应的翻译名称返回,如果不传/不支持的返回中文名称，阿拉伯语-ara，葡萄牙语-pt，西班牙语-spa，英语-en，印尼语-id |

### 请求体示例
```
https://openapi.dun.163.com/openapi/v2/antispam/label/query？maxDepth=3&clientId=123&businessId=123&businessTypes=100
```

## 响应
该接口将返回请求客户或业务下的AI审核标签信息

### 响应结果

响应字段的详细信息如下：

| 名称                   | 类型     | 必须返回 | 描述                                                         |
| ---------------------- | -------- | -------- | ------------------------------------------------------------ |
| code               | Number| 是       | 接口调用状态，200:正常，其他值：调用出错                                      |
| msg               | string | 是       | 结果说明，如果接口调用出错，那么返回错误描述，成功返回 ok                                        |
| data               | Object[] | 是       | 标签的信息                                         |
| &emsp;∟label         | Number   | 是       | 一级标签                                                 |
| &emsp;∟name       | string   | 是       | 一级标签名称 |
| &emsp;∟subLabels       |Object[]   | 是       | 二级标签信息 |
| &emsp;&emsp;∟businessId        | String   | 否       | 当该标签是业务私有时，会返回标签归属的业务Id     |
| &emsp;&emsp;∟businessType          | Number   | 否       | 业务类型      |
| &emsp;&emsp;∟code    | Number   | 是       | 二级标签编码               |
| &emsp;&emsp;∟createTime       | String   | 否       | 二级标签创建时间              |
| &emsp;&emsp;∟depth       | Number   | 是       | 标签层级                                     |
| &emsp;&emsp;∟name         | String   | 是       | 二级标签名称                                    |
| &emsp;&emsp;∟type        | Number | 否       | 标签类型，1-通用/2-客户/3-业务                                    |
| &emsp;&emsp;∟subLabels     | Object[]   | 是       | 三级标签信息 |
| &emsp;&emsp;&emsp;∟businessId        | String   | 否       | 当该标签是业务私有时，会返回标签归属的业务Id     |
| &emsp;&emsp;&emsp;∟businessType          | Number   | 否       | 业务类型      |
| &emsp;&emsp;&emsp;∟code    | Number   | 是       | 三级标签编码               |
| &emsp;&emsp;&emsp;∟createTime       | String   | 否       | 三级标签创建时间              |
| &emsp;&emsp;&emsp;∟depth       | Number   | 是       | 标签层级                                     |
| &emsp;&emsp;&emsp;∟name         | Srting   | 是       | 三级标签名称                                    |
| &emsp;&emsp;&emsp;∟type        | Number | 否       | 标签类型，1-通用/2-客户/3-业务                                    |


### 响应体示例

```json
{
    "code":200,
    "data":[
    {
        "label":100,
        "name":"色情",
        "subLabels":[
            {
               
                "businessId":"businessId",
                "businessType":[100],
                "code":222,
                "createTime":1669100431548,
                "depth":2,
                "name":"二级标签",
                "type":3,
                "subLabels":[
                    {
                        "businessId":"businessId",//业务id
                        "businessType":[100],
                        "code":333,//标签code
                        "createTime":1669100431548,//创建时间
                        "depth":3,//标签层级
                        "name":"三级标签",//标签名称
                        "type":3//标签类型,1-通用/2-客户/3-业务
                        "subLabels":[
                                                    
                        ]
                    }
                ]
            }
        ]
    }
],
    "msg":"OK"
}
```

### 响应返回码

| 返回码                   | 返回码描述     | 说明 |
| ---------------------- | -------- | -------- |
| 200              | ok|接口调用成功       |
| 513              | param error|接口参数错误       |
| 503              | businessType error |业务参数错误       |


## 接入示例代码

### 开发工具集（SDK）接入

为方便开发者调试和接入API，我们提供了配套的[开发工具集（SDK）](https://support.dun.163.com/download/588434200783982592?productName=%E5%86%85%E5%AE%B9%E5%AE%89%E5%85%A8)，用于简化API接入流程。SDK中各接口调用方式基本相同，接入方式统一，并提供了一些接口调用过程中常见的异常处理方案。以下介绍了SDK的使用流程，以及使用SDK的简单示例。

* 准备工作

准备步骤详见[通用步骤](https://support.dun.163.com/documents/588434200783982592?docId=682781209345695744)


* 使用方法

该接口的使用方法可参考以下SDK demo：  
 Github地址   
 [Java SDK demo](https://github.com/yidun/yidun-java-sdk/blob/main/yidun-java-sdk-demo/src/main/java/com/netease/yidun/sdk/antispam/label/LabelQueryDemo.java)
 
 [Golang SDK demo](https://github.com/yidun/yidun-golang-sdk/blob/main/yidun/demo/antispam/label/label_query_demo.go)
 
 Gitee地址（Github无法访问时选择）
 
 [Java SDK demo](https://gitee.com/netease_yidun/yidun-java-sdk/blob/main/yidun-java-sdk-demo/src/main/java/com/netease/yidun/sdk/antispam/label/LabelQueryDemo.java)
 
  [Golang SDK demo](https://gitee.com/netease_yidun/yidun-golang-sdk/blob/main/yidun/demo/antispam/label/label_query_demo.go)

 ### API接入

如果您选择非SDK接入，使用API方式接入，请参考各开发语言汇总[示例代码](https://support.dun.163.com/code/588434200783982592?productName=%E5%86%85%E5%AE%B9%E5%AE%89%E5%85%A8)<br>

该接口的使用方法具体示例如下：

* Github地址

[JAVA示例代码](https://github.com/yidun/antispam-java-demo/blob/master/src/main/java/com/netease/is/antispam/demo/label/LabelQueryApiDemo.java)

* Gitee地址（Github无法访问时选择）

[JAVA示例代码](https://gitee.com/netease_yidun/antispam-java-demo/blob/master/src/main/java/com/netease/is/antispam/demo/label/LabelQueryApiDemo.java)