# Querying Resources by Tag

#### Function

Query DNS resources by tag.

Resources are sorted by creation time in descending order.

#### URI

POST /v2/{project_id}/{resource_type}/resource_instances/action

For details, see Table 1.

Table 1 Parameters in the URI
Parameter | Mandatory | Type | Description
--- | --- | --- | ---
project_id | Yes | String | Project ID. You can obtain it in Obtaining a Project ID.
resource_type | Yes | String | Resource type, which can be DNS-public_zone, DNS-private_zone, DNS-public_recordset, DNS-private_recordset, or DNS-ptr_record

#### Request

- Parameter description

  Table 2 Parameters in the request
  Parameter | Mandatory | Type | Description
  --- | --- | --- | ---
  tags | No | Array of object | Includes specified tags. For details, see Table 3. The structure body is mandatory. A maximum of 20 tag keys are allowed in each query operation. The tag key cannot be left blank or set to the empty string. One tag key can have up to 10 tag values. Each tag key must be unique, and the tag values of one key must also be unique.
  tags_any | No | Array of object | Includes any of the specified tags. For details, see Table 3. The structure body is mandatory. A maximum of 20 tag keys are allowed in each query operation. The tag key cannot be left blank or set to the empty string. One tag key can have up to 10 tag values. Each tag key must be unique, and the tag values of one key must also be unique.
  not_tags | No | Array of object | Excludes specified tags. For details, see Table 3. The structure body is mandatory. A maximum of 20 tag keys are allowed in each query operation. The tag key cannot be left blank or set to the empty string. One tag key can have up to 10 tag values. Each tag key must be unique, and the tag values of one key must also be unique.
  not_tags_any | No | Array of object | Excludes any of the specified tags. For details, see Table 3. The structure body is mandatory. A maximum of 20 tag keys are allowed in each query operation. The tag key cannot be left blank or set to the empty string. One tag key can have up to 10 tag values. Each tag key must be unique, and the tag values of one key must also be unique.

  limit

  No

  Integer

  Number of resources on each page

  The value range is 1–1000.
  - If the value of action is set to filter, the default value is 1000.
  - If action is set to count, this parameter does not take effect.

  offset

  No

  Integer

  Start offset of pagination query. The query will start from the next resource of the offset value.

  The value ranges from 0 to 2147483647.

  The default value is 0.
  - You do not need to specify this parameter when querying resources on the first page.
  - When you query resources on subsequent pages, set the value of offset to the location returned in the response body for the previous query.
  - If action is set to filter, this parameter takes effect. Its value can be 0 (default) or a positive integer.
  - If action is set to count, this parameter does not take effect.

  action

  Yes

  String

  Operation to be performed

  The value can be:
  - filter: queries resources in pages by filter condition.
  - count: queries the total number of resources.

  matches | No | Array of object | Field to be matched. For details, see Table 4. This parameter specifies the key-value pair to be matched in the query. If value is left blank, an exact match is performed. Otherwise, a fuzzy match is performed.

  Table 3 Parameters in the tags field
  Parameter | Mandatory | Type | Description
  --- | --- | --- | ---
  key | Yes | String | Tag key. A key contains 127 Unicode characters and cannot be blank. (This parameter is not verified in the search process.)
  values | Yes | Array of strings | Values of the tag. A value contains a maximum of 255 Unicode characters. The asterisk (*) is a reserved character. If the value starts with an asterisk (*), fuzzy matching will work for the string following the asterisk. If this parameter is not specified, any value is matched. The values are in OR relationship.

  Table 4 Parameters in the matches field
  Parameter | Mandatory | Type | Description
  --- | --- | --- | ---
  key | Yes | String | Key to be matched. Currently, it can only be resource_name.
  value | Yes | String | Value to be matched. It contains a maximum of 255 Unicode characters and cannot contain underscores (_) and percent sign (%).

- Example request
  Query DNS resources by tag.

      POST https://{DNS_Endpoint}/v2/{project_id}/DNS-private_zone/resource_instances/action

  The following is a request example when action is set to filter:

      {
          "offset": "100",
          "limit": "100",
          "action": "filter",
          "matches": [
              {
                  "key": "resource_name",
                  "value": "resource1"
              }
          ],
          "not_tags": [
              {
                  "key": "key1",
                  "values": [
                      "*value1",
                      "value2"
                  ]
              }
          ],
          "tags": [
              {
                  "key": "key1",
                  "values": [
                      "*value1",
                      "value2"
                  ]
              }
          ],
          "tags_any": [
              {
                  "key": "key1",
                  "values": [
                      "value1",
                      "value2"
                  ]
              }
          ],
          "not_tags_any": [
              {
                  "key": "key1",
                  "values": [
                      "value1",
                      "value2"
                  ]
              }
          ]
      }

  The following is a request example when action is set to count:

      {
          "action": "count",
          "not_tags": [
              {
                  "key": "key1",
                  "values": [
                      "value1",
                      "*value2"
                  ]
              }
          ],
          "tags": [
              {
                  "key": "key1",
                  "values": [
                      "value1",
                      "value2"
                  ]
              },
              {
                  "key": "key2",
                  "values": [
                      "value1",
                      "value2"
                  ]
              }
          ],
          "tags_any": [
              {
                  "key": "key1",
                  "values": [
                      "value1",
                      "value2"
                  ]
              }
          ],
          "not_tags_any": [
              {
                  "key": "key1",
                  "values": [
                      "value1",
                      "value2"
                  ]
              }
          ],
          "matches": [
              {
                  "key": "resource_name",
                  "value": "resource1"
              }
          ]
      }

#### Response

- Parameter description

  Table 5 Parameters in the response
  Parameter | Type | Description
  --- | --- | ---
  resources | Array of object | Resource list For details, see Table 6.
  total_count | Integer | Number of resources that meet the filter criteria. The number is irrelevant to limit or offset.

  Table 6 Parameters in the resources field
  Parameter | Type | Description
  --- | --- | ---
  resource_id | String | Resource ID
  resource_detail | String | Resource details. This field is reserved for subsequent extension, and its value defaults to an empty string.
  tags | Array of object | List of queried tags. If no tag is matched, an empty array is returned. For details, see Table 2.
  resource_name | String | Resource name. If no resource name is matched, the value is left blank.

- Example response
  The following is a request example when action is set to filter:

      {
          "resources": [
              {
                  "resource_detail": null,
                  "resource_id": "cdfs_cefs_wesas_12_dsad",
                  "resource_name": "resouece1",
                  "tags": [
                      {
                          "key": "key1",
                          "value": "value1"
                      },
                      {
                          "key": "key2",
                          "value": "value1"
                      }
                  ]
              }
          ],
          "total_count": 1000
      }

  The following is a request example when action is set to count:

      {
          "total_count": 1000
      }

#### Returned Value

If the API call returns a code of 2xx, for example, 200, 202, or 204, the request is successful.

For details, see Status Code.

Parent topic: Tag Management