# `menu`

Controls the menu of the GraphQL docs, allowing grouping of queries, mutation, objects, and other elements in the sidebar.
Use this option to make a large or complex GraphQL description easier for users to navigate and use.

## Menu object

| Option | Type | Description |
|  --- | --- | --- |
| groups | [[Menu groups object](#menu-groups-object)] | Add top-level groups for different areas of your GraphQL API.
Useful for larger GraphQL APIs to add structure to the documentation. |
| otherItemsGroupName | string | Any items that don't match another group will be added under this group. |
| requireExactGroups | boolean | Requires every group to be defined.
If not, it results in an error.
Default: `false`. |


## Menu groups object

| Option | Type | Description |
|  --- | --- | --- |
| name | string | Group name. |
| items | [Type group config object](#type-group-config-object) | Configuration for a group of Items. |
| queries | [Type group config object](#type-group-config-object) | Configuration for a group of Queries. |
| mutations | [Type group config object](#type-group-config-object) | Configuration for a group of Mutations. |
| subscriptions | [Type group config object](#type-group-config-object) | Configuration for a group of Subscriptions. |
| types | [Type group config object](#type-group-config-object) | Configuration for a group of Types. |
| directives | [Type group config object](#type-group-config-object) | Configuration for a group of Directives. |


### Type group config object

| Option | Type | Description |
|  --- | --- | --- |
| includeByName | string | JavaScript [ECMA-262](https://262.ecma-international.org/13.0/#sec-regular-expressions) regular expression pattern to include in the group by name. |
| excludeByName | string | JavaScript [ECMA-262](https://262.ecma-international.org/13.0/#sec-regular-expressions) regular expression pattern to include in the group by name. |


## Examples

The following example defines groups for the GraphQL items, and puts everything else under an "Other" entry:


```yaml
graphql:
  menu:
    requireExactGroups: false
    groups:
      - name: 'Cart'
        items:
          includeByName: ['/cart/i']
      - name: 'Products'
        items:
          includeByName: ['/product/i']
      - name: 'Customer'
        items:
          includeByName: ['/customer/i']
      - name: 'Company'
        items:
          includeByName: ['/company/i']
      - name: 'Gift'
        items:
          includeByName: ['/gift/i']
    otherItemsGroupName: 'Other'
```

With this configuration in place, the sidebar shows the cart, product, customer, company and gift items under their own sections.

## Resources

- **[GraphQL](https://graphql.org/)** - Official GraphQL specification and documentation for understanding query language fundamentals
- **[GraphQL configuration](/docs/realm/config/graphql)** - Complete guide to GraphQL configuration options for customizing API reference documentation