
# 根据标签过滤资源 - ListFilterResources
#### 功能介绍
根据标签过滤资源
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-cts/cts_api_0006.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cts/cts_api_1001.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                 | 访问级别 | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | cts:resource:filter | List | -           | -   | -  | -      |
     
  
 
#### URI
POST /v3/{project_id}/{resource_type}/resource-instances/filter
表1路径参数 
| 参数            | 是否必选 | 参数类型   | 描述                        |
|:---|:---|:---|:---|
| project_id    | 是    | String | 项目ID。                     |
| resource_type | 是    | String | 资源类型，CTS服务固定为cts-tracker。 |
   
表2Query参数 
| 参数     | 是否必选 | 参数类型    | 描述                                          |
|:---|:---|:---|:---|
| limit  | 否    | Integer | 查询记录数，不传默认为1000，limit最多为1000, 最小值为1。        |
| offset | 否    | Integer | 索引位置， 从offset指定的下一条数据开始查询，必须为数字，不能为负数，默认为0。 |
   
#### 请求参数
表3请求Body参数 
| 参数              | 是否必选 | 参数类型                                                              | 描述                                                                                                        |
|:---|:---|:---|:---|
| without_any_tag | 否    | Boolean                                                           | 是否仅查询未带标签的资源。该字段为true时查询所有不带标签的资源，此时忽略 "tags"字段。该字段为false或者未提供该参数时，该条件不生效，即返回所有资源或按"tags"，"matches"等条件过滤。 |
| tags            | 否    | Array of [TmsTags] objects | 标签列表。最多包含20个key，每个key下面的value最多20个。                                                                       |
| matches         | 否    | Array of [Match] objects     | 搜索字段。key为要匹配的字段，value为匹配的值。 如果value为空字符串则精确匹配，否则模糊匹配。                                                     |
   
 表4TmsTags 
| 参数     | 是否必选 | 参数类型             | 描述                                                               |
|:---|:---|:---|:---|
| key    | 否    | String           | 键。最大长度128个unicode字符。标签的键可以包含任意语种字母、数字、空格和_ . : = + - @，但首尾不能含有空格 |
| values | 否    | Array of strings | value列表                                                          |
   
 表5Match 
| 参数    | 是否必选 | 参数类型   | 描述                                      |
|:---|:---|:---|:---|
| key   | 否    | String | 键。当前值限定为resource_name。                  |
| value | 否    | String | 值。每个值最大长度255个unicode字符。不能包含"_","%"特殊字符。 |
   
#### 响应参数
**状态码：200**
表6响应Body参数 
| 参数          | 参数类型                                                                 | 描述              |
|:---|:---|:---|
| resources   | Array of [Resource] objects | 资源标签详情。         |
| total_count | Integer                                                              | 列表中的项目总数，与分页无关。 |
   
 表7Resource 
| 参数              | 参数类型                                                                       | 描述                    |
|:---|:---|:---|
| resource_id     | String                                                                     | 资源ID。                 |
| resource_detail | String                                                                     | 资源详情。 资源对象，用于扩展。默认为空。 |
| tags            | Array of [ResourceTag] objects | 标签列表，没有标签默认为空数组。      |
| resource_name   | String                                                                     | 资源名称。                 |
   
 表8ResourceTag 
| 参数    | 参数类型   | 描述                                                                                                                  |
|:---|:---|:---|
| key   | String | 键。最大长度128个unicode字符。标签的键可以包含任意语种字母、数字、空格和_ . : = + - @，但首尾不能含有空格，不能以_sys_开头。                                        |
| value | String | 值。每个值最大长度255个unicode字符，删除时如果value有值按照key/value删除，如果value没值，则按照key删除。标签的值可以包含任意语种字母、数字、空格和_ . : / = + - @，但首尾不能含有空格。 |
   
#### 请求示例
根据标签过滤资源
```
POST https://{endpoint}/v3/{project_id}/{resource_type}/resource-instances/filter
{
  "without_any_tag" : true,
  "tags" : [ {
    "key" : "key1",
    "values" : [ "value1", "value2" ]
  } ],
  "matches" : [ {
    "key" : "resource_name",
    "value" : "resource1"
  } ]
}
```
#### 响应示例
**状态码：200**
请求成功。
```
{
  "total_count" : 1000,
  "resources" : [ {
    "resource_detail" : "",
    "resource_id" : "resource_idA",
    "resource_name" : "system",
    "tags" : [ {
      "key" : "key1",
      "value" : "value1"
    } ]
  } ]
}
```
#### 状态码
| 状态码 | 描述    |
|:---|:---|
| 200 | 请求成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cts/ErrorCode.html)。
