# List practice taxonomy

Browse active IELTS question taxonomy, resolve ambiguous filter terms, and return availability counts. practice.search_parts accepts literal tagQueries directly, so use this Tool only when taxonomy discovery, disambiguation, or counts are needed.

- Capability ID: `practice.list_taxonomy`
- Operation: `ielts_practice_list_taxonomy`
- Category: 题库与练习
- Endpoint: `POST /api/v1/agent/capabilities/ielts_practice_list_taxonomy`
- Authentication: Bearer Token（通过 /api/v1/agent-bindings 绑定账号）
- Required scopes: question_bank:read
- Side effect: read
- Human documentation: https://ieltsbuddy.igopx.cn/developers/api/ielts_practice_list_taxonomy

## Request parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `difficulty` | string | 否 | Optional difficulty filter used to calculate available counts. |
| `includeCourseLinked` | boolean | 否 | Whether availability counts include course-linked parts. |
| `search` | string | 否 | Optional question search text used to calculate available counts. |
| `subject` | string | 否 | Optional IELTS subject filter. |
| `tagIds` | number[] | 否 | Currently selected tag ids used to calculate dependent availability. |
| `tagQueries` | unknown[] | 否 | User-mentioned question-bank category, complete resource-set name, or other taxonomy terms used to find exact tag ids before searching practice. |

## Request example

```bash
curl -X POST \
  'https://work.ieltsbuddy.igopx.cn/api/v1/agent/capabilities/ielts_practice_list_taxonomy' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer $IELTS_BUDDY_TOKEN' \
  --data '{"difficulty":"","includeCourseLinked":false,"search":"","subject":"","tagIds":[],"tagQueries":[]}'
```

## Request schema

```json
{
  "type": "object",
  "properties": {
    "difficulty": {
      "default": "",
      "description": "Optional difficulty filter used to calculate available counts.",
      "type": "string",
      "enum": [
        "",
        "基础",
        "核心",
        "冲刺"
      ]
    },
    "includeCourseLinked": {
      "default": false,
      "description": "Whether availability counts include course-linked parts.",
      "type": "boolean"
    },
    "search": {
      "default": "",
      "description": "Optional question search text used to calculate available counts.",
      "type": "string"
    },
    "subject": {
      "default": "",
      "description": "Optional IELTS subject filter.",
      "type": "string",
      "enum": [
        "",
        "listening",
        "reading",
        "speaking",
        "writing"
      ]
    },
    "tagIds": {
      "default": [],
      "description": "Currently selected tag ids used to calculate dependent availability.",
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "tagQueries": {
      "default": [],
      "description": "User-mentioned question-bank category, complete resource-set name, or other taxonomy terms used to find exact tag ids before searching practice.",
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      }
    }
  },
  "required": [
    "difficulty",
    "includeCourseLinked",
    "search",
    "subject",
    "tagIds",
    "tagQueries"
  ],
  "additionalProperties": false
}
```

## Response envelope

```json
{
  "code": 0,
  "data": {},
  "message": "ok"
}
```

## Errors

| HTTP | Code | Meaning |
| --- | --- | --- |
| 400 | `40001` | 请求参数不符合接口契约 |
| 401 | `40101` | 缺少或使用了无效的访问令牌 |
| 403 | `40301` | 访问令牌不包含接口所需权限 |
| 404 | `40401` | 接口或目标资源不存在 |
