> For the complete documentation index, see [llms.txt](https://docs.testmace.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.testmace.com/master/node-types/api-description/apifolder.md).

# 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](/master/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](https://1914040845-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LYfhIaTTw23Sf3L5jfe%2F-LgsCA8b3GaVRHvOyk3b%2F-LgsCm8cE2tYZ-qYFFWc%2F1.png?alt=media\&token=9a7b2f6f-24f1-455c-abc7-e0ce036e7172)

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

![The ApiFolder context menu](https://1914040845-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LYfhIaTTw23Sf3L5jfe%2F-LlffkWjAr-L0Akq3f5g%2F-LlfflYo-YCjuMYdtA1b%2Fimage.png?alt=media\&token=d6e70623-09b6-49ce-8360-f1f311509720)

* **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](https://1914040845-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LYfhIaTTw23Sf3L5jfe%2F-LgsCA8b3GaVRHvOyk3b%2F-LgsGJ-A7inEue6zqfAI%2F3.png?alt=media\&token=702d4b06-f2b1-4cc6-9b8b-da4887fee8c4)

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

* The [user-defined variables](/master/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#"
}
```
