# ApiFolder

An **ApiFolder** is identical to a Follder node and is used to group nodes of another types (ApiRoute in this case).

There are two ways to create an **ApiFolder** node:

* Adding it from the [ApiRootFolder](/node-types/api-description/apirootfolder.md) node context menu;
* Using import from API description format.

This is how an ApiFolder node looks like in the project tree:

![An ApiFolder node in the project tree](/files/-LgsCm8cE2tYZ-qYFFWc)

An **ApiFolder** node has the following context menu:

![The ApiFolder context menu](/files/-LlfflYo-YCjuMYdtA1b)

* **Add node.** Click on it to add a child node. You can choose a node type in the submenu.
* **Rename.** Change the node name.
* **Duplicate.** Make a copy of the node. The new node will be named NodeName \[Copy \[number]].
* **Remove node.** Use it to delete the node.
* **Show in explorer.** Open the folder with the node in the file manager.

‌The **ApiFolder** node tab has the following interface:

![The ApiFolder node tab interface](/files/-LgsGJ-A7inEue6zqfAI)

In the screenshot you can see the following parts of the tab:

* The [user-defined variables](/variables/user-variables.md) managing dialog;
* Child nodes list.

### File Representation

An **ApiFolder** node is a folder with the node name, containing the index.yml file with the following format:

```javascript
{
  "type": "object",
  "properties": {
    "type": {
      "description": "Type of ApiFolder node",
      "const": "ApiFolder",
      "type": "string"
    },
    "children": {
      "description": "List of children names",
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": []
    },
    "variables": {
      "$ref": "#/definitions/NodeVariables",
      "description": "Node variables dictionary"
    },
    "name": {
      "description": "Node name",
      "type": "string"
    }
  },
  "required": [
    "children",
    "name",
    "type",
    "variables"
  ],
  "definitions": {
    "NodeVariables": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.testmace.com/node-types/api-description/apifolder.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
