> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/navixy-api/panel-api/resources/user/preset.md).

# Menu preset

API calls to work with the customizable sidebar structure for end users.\
Customizable sidebar allows you to create flexible user menus by adding, rearranging, and renaming menu items and tabs.\
Menu presets act as templates that can be assigned to users.

## Entity description

### Menu preset

## The MenuPreset object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"MenuPreset":{"type":"object","description":"A menu layout that can be assigned to users.\n\nNote the asymmetry: `main` is an **array** of groups, while `footer` is a **single** group.","properties":{"id":{"type":"integer","description":"Preset ID."},"title":{"type":"string","description":"Preset name."},"main":{"type":"array","description":"Groups shown in the main menu area.","items":{"$ref":"#/components/schemas/MenuGroup"}},"footer":{"allOf":[{"$ref":"#/components/schemas/MenuGroup"}],"description":"The single group shown in the menu footer."}}},"MenuGroup":{"type":"object","description":"A titled group of menu items. The title is frequently `null`, which renders the group without a heading.","properties":{"title":{"type":["string","null"],"description":"Localization key for the group title, or `null` for an untitled group."},"items":{"type":"array","description":"Items in the group.","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","description":"An entry in a menu group. An item with several tabs opens as a group of related destinations.","properties":{"title":{"type":"string","description":"Localization key for the item title."},"icon":{"type":"string","description":"Icon identifier."},"tabs":{"type":"array","description":"Destinations belonging to this item.","items":{"$ref":"#/components/schemas/MenuTab"}}}},"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}}}}}
```

Note the asymmetry between the two layout areas: `main` is an **array** of groups, while `footer` is a **single** group.

### Menu group

## The MenuGroup object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"MenuGroup":{"type":"object","description":"A titled group of menu items. The title is frequently `null`, which renders the group without a heading.","properties":{"title":{"type":["string","null"],"description":"Localization key for the group title, or `null` for an untitled group."},"items":{"type":"array","description":"Items in the group.","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","description":"An entry in a menu group. An item with several tabs opens as a group of related destinations.","properties":{"title":{"type":"string","description":"Localization key for the item title."},"icon":{"type":"string","description":"Icon identifier."},"tabs":{"type":"array","description":"Destinations belonging to this item.","items":{"$ref":"#/components/schemas/MenuTab"}}}},"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}}}}}
```

### Menu item

## The MenuItem object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"MenuItem":{"type":"object","description":"An entry in a menu group. An item with several tabs opens as a group of related destinations.","properties":{"title":{"type":"string","description":"Localization key for the item title."},"icon":{"type":"string","description":"Icon identifier."},"tabs":{"type":"array","description":"Destinations belonging to this item.","items":{"$ref":"#/components/schemas/MenuTab"}}}},"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}}}}}
```

### Menu tab

## The MenuTab object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}}}}}
```

All `title` values on presets, groups, items, and tabs are **localization keys** such as `common.menu.dashboard`, not display strings. The interface resolves them against the user's locale.

### Menu preset assignment

## The MenuPresetListEntry object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"MenuPresetListEntry":{"type":"object","description":"A menu preset together with who owns it and what it is assigned to.","readOnly":true,"properties":{"preset":{"$ref":"#/components/schemas/MenuPreset"},"owner":{"type":"string","description":"Who defined the preset. Platform-owned presets are supplied by Navixy and are not editable by the dealer.","enum":["dealer","platform"]},"assignments":{"type":"array","description":"Current assignments of this preset.","items":{"$ref":"#/components/schemas/MenuPresetAssignmentTarget"}}}},"MenuPreset":{"type":"object","description":"A menu layout that can be assigned to users.\n\nNote the asymmetry: `main` is an **array** of groups, while `footer` is a **single** group.","properties":{"id":{"type":"integer","description":"Preset ID."},"title":{"type":"string","description":"Preset name."},"main":{"type":"array","description":"Groups shown in the main menu area.","items":{"$ref":"#/components/schemas/MenuGroup"}},"footer":{"allOf":[{"$ref":"#/components/schemas/MenuGroup"}],"description":"The single group shown in the menu footer."}}},"MenuGroup":{"type":"object","description":"A titled group of menu items. The title is frequently `null`, which renders the group without a heading.","properties":{"title":{"type":["string","null"],"description":"Localization key for the group title, or `null` for an untitled group."},"items":{"type":"array","description":"Items in the group.","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","description":"An entry in a menu group. An item with several tabs opens as a group of related destinations.","properties":{"title":{"type":"string","description":"Localization key for the item title."},"icon":{"type":"string","description":"Icon identifier."},"tabs":{"type":"array","description":"Destinations belonging to this item.","items":{"$ref":"#/components/schemas/MenuTab"}}}},"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}},"MenuPresetAssignmentTarget":{"description":"What the preset is assigned to. The shape depends on `type`.","oneOf":[{"$ref":"#/components/schemas/MenuPresetAssignmentAll"},{"$ref":"#/components/schemas/MenuPresetAssignmentUsers"}],"discriminator":{"propertyName":"type","mapping":{"default":"#/components/schemas/MenuPresetAssignmentAll","users":"#/components/schemas/MenuPresetAssignmentUsers"}}},"MenuPresetAssignmentAll":{"type":"object","title":"default","description":"Assign the preset as the dealer default, applying to users with no explicit assignment.","required":["type"],"properties":{"type":{"type":"string","enum":["default"]}}},"MenuPresetAssignmentUsers":{"type":"object","title":"users","description":"Assign the preset to an explicit list of users.","required":["type","ids"],"properties":{"type":{"type":"string","enum":["users"]},"ids":{"type":"array","description":"User IDs to assign the preset to. At most 10000.","maxItems":10000,"items":{"type":"integer","minimum":1}}}}}}}
```

#### Preset owner

`owner` reports who defined the preset:

* `dealer` - created by the dealer, and editable by them.
* `platform` - supplied by Navixy. Visible to the dealer but not editable.

### Menu preset assignment type

## The MenuPresetAssignmentTarget object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"MenuPresetAssignmentTarget":{"description":"What the preset is assigned to. The shape depends on `type`.","oneOf":[{"$ref":"#/components/schemas/MenuPresetAssignmentAll"},{"$ref":"#/components/schemas/MenuPresetAssignmentUsers"}],"discriminator":{"propertyName":"type","mapping":{"default":"#/components/schemas/MenuPresetAssignmentAll","users":"#/components/schemas/MenuPresetAssignmentUsers"}}},"MenuPresetAssignmentAll":{"type":"object","title":"default","description":"Assign the preset as the dealer default, applying to users with no explicit assignment.","required":["type"],"properties":{"type":{"type":"string","enum":["default"]}}},"MenuPresetAssignmentUsers":{"type":"object","title":"users","description":"Assign the preset to an explicit list of users.","required":["type","ids"],"properties":{"type":{"type":"string","enum":["users"]},"ids":{"type":"array","description":"User IDs to assign the preset to. At most 10000.","maxItems":10000,"items":{"type":"integer","minimum":1}}}}}}}
```

## API actions

API path: `panel/user/menu/preset`.

***

*required permissions*: `users: "read"`.

## List menu presets

> List the menu presets available to the dealer, each with its owner and current assignments.\
> \
> Presets owned by \`platform\` are supplied by Navixy. Takes no parameters beyond the session credential.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"User","description":"End users belonging to the dealer: their profiles, sessions, balance transactions, menu presets, and multi-factor authentication settings. All resources under the /panel/user/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"schemas":{"MenuPresetListEntry":{"type":"object","description":"A menu preset together with who owns it and what it is assigned to.","readOnly":true,"properties":{"preset":{"$ref":"#/components/schemas/MenuPreset"},"owner":{"type":"string","description":"Who defined the preset. Platform-owned presets are supplied by Navixy and are not editable by the dealer.","enum":["dealer","platform"]},"assignments":{"type":"array","description":"Current assignments of this preset.","items":{"$ref":"#/components/schemas/MenuPresetAssignmentTarget"}}}},"MenuPreset":{"type":"object","description":"A menu layout that can be assigned to users.\n\nNote the asymmetry: `main` is an **array** of groups, while `footer` is a **single** group.","properties":{"id":{"type":"integer","description":"Preset ID."},"title":{"type":"string","description":"Preset name."},"main":{"type":"array","description":"Groups shown in the main menu area.","items":{"$ref":"#/components/schemas/MenuGroup"}},"footer":{"allOf":[{"$ref":"#/components/schemas/MenuGroup"}],"description":"The single group shown in the menu footer."}}},"MenuGroup":{"type":"object","description":"A titled group of menu items. The title is frequently `null`, which renders the group without a heading.","properties":{"title":{"type":["string","null"],"description":"Localization key for the group title, or `null` for an untitled group."},"items":{"type":"array","description":"Items in the group.","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","description":"An entry in a menu group. An item with several tabs opens as a group of related destinations.","properties":{"title":{"type":"string","description":"Localization key for the item title."},"icon":{"type":"string","description":"Icon identifier."},"tabs":{"type":"array","description":"Destinations belonging to this item.","items":{"$ref":"#/components/schemas/MenuTab"}}}},"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}},"MenuPresetAssignmentTarget":{"description":"What the preset is assigned to. The shape depends on `type`.","oneOf":[{"$ref":"#/components/schemas/MenuPresetAssignmentAll"},{"$ref":"#/components/schemas/MenuPresetAssignmentUsers"}],"discriminator":{"propertyName":"type","mapping":{"default":"#/components/schemas/MenuPresetAssignmentAll","users":"#/components/schemas/MenuPresetAssignmentUsers"}}},"MenuPresetAssignmentAll":{"type":"object","title":"default","description":"Assign the preset as the dealer default, applying to users with no explicit assignment.","required":["type"],"properties":{"type":{"type":"string","enum":["default"]}}},"MenuPresetAssignmentUsers":{"type":"object","title":"users","description":"Assign the preset to an explicit list of users.","required":["type","ids"],"properties":{"type":{"type":"string","enum":["users"]},"ids":{"type":"array","description":"User IDs to assign the preset to. At most 10000.","maxItems":10000,"items":{"type":"integer","minimum":1}}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/user/menu/preset/list":{"post":{"tags":["User"],"summary":"List menu presets","operationId":"userMenuPresetList","description":"List the menu presets available to the dealer, each with its owner and current assignments.\n\nPresets owned by `platform` are supplied by Navixy. Takes no parameters beyond the session credential.","responses":{"200":{"description":"Menu presets","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"list":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/MenuPresetListEntry"}}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

***

*required permissions*: `users: "create"`.

## Create menu preset

> Create a menu preset for the dealer. The layout is passed as a \`preset\` object with no \`id\`.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"User","description":"End users belonging to the dealer: their profiles, sessions, balance transactions, menu presets, and multi-factor authentication settings. All resources under the /panel/user/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"schemas":{"MenuPresetDraft":{"type":"object","description":"A menu preset for creation. Carries no `id`, which the platform assigns.","required":["title"],"properties":{"title":{"type":"string","description":"Preset name."},"main":{"type":"array","items":{"$ref":"#/components/schemas/MenuGroup"}},"footer":{"$ref":"#/components/schemas/MenuGroup"}}},"MenuGroup":{"type":"object","description":"A titled group of menu items. The title is frequently `null`, which renders the group without a heading.","properties":{"title":{"type":["string","null"],"description":"Localization key for the group title, or `null` for an untitled group."},"items":{"type":"array","description":"Items in the group.","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","description":"An entry in a menu group. An item with several tabs opens as a group of related destinations.","properties":{"title":{"type":"string","description":"Localization key for the item title."},"icon":{"type":"string","description":"Icon identifier."},"tabs":{"type":"array","description":"Destinations belonging to this item.","items":{"$ref":"#/components/schemas/MenuTab"}}}},"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/user/menu/preset/create":{"post":{"tags":["User"],"summary":"Create menu preset","operationId":"userMenuPresetCreate","description":"Create a menu preset for the dealer. The layout is passed as a `preset` object with no `id`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["preset"],"properties":{"preset":{"$ref":"#/components/schemas/MenuPresetDraft"}}}}}},"responses":{"200":{"description":"Preset created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"id":{"type":"integer","description":"ID of the created preset.","readOnly":true}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

* 201 - Not found in the database - if a referenced menu item or destination does not exist.

***

*required permissions*: `users: "update"`.

## Update menu preset

> Update a menu preset. The \`preset\` object must carry its \`id\`. Presets owned by \`platform\` cannot be updated.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"User","description":"End users belonging to the dealer: their profiles, sessions, balance transactions, menu presets, and multi-factor authentication settings. All resources under the /panel/user/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"schemas":{"MenuPresetEdit":{"type":"object","description":"A menu preset for update. Requires `id`.","required":["id","title"],"properties":{"id":{"type":"integer","description":"Menu preset ID.","minimum":1},"title":{"type":"string","description":"Preset name."},"main":{"type":"array","items":{"$ref":"#/components/schemas/MenuGroup"}},"footer":{"$ref":"#/components/schemas/MenuGroup"}}},"MenuGroup":{"type":"object","description":"A titled group of menu items. The title is frequently `null`, which renders the group without a heading.","properties":{"title":{"type":["string","null"],"description":"Localization key for the group title, or `null` for an untitled group."},"items":{"type":"array","description":"Items in the group.","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","description":"An entry in a menu group. An item with several tabs opens as a group of related destinations.","properties":{"title":{"type":"string","description":"Localization key for the item title."},"icon":{"type":"string","description":"Icon identifier."},"tabs":{"type":"array","description":"Destinations belonging to this item.","items":{"$ref":"#/components/schemas/MenuTab"}}}},"MenuTab":{"type":"object","description":"A single destination within a menu item. Titles are localization keys, not display strings.","properties":{"title":{"type":"string","description":"Localization key for the tab title."},"destination":{"type":"string","description":"Application destination this tab opens."}}}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/user/menu/preset/update":{"post":{"tags":["User"],"summary":"Update menu preset","operationId":"userMenuPresetUpdate","description":"Update a menu preset. The `preset` object must carry its `id`. Presets owned by `platform` cannot be updated.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["preset"],"properties":{"preset":{"$ref":"#/components/schemas/MenuPresetEdit"}}}}}},"responses":{"200":{"$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

* 201 - Not found in the database - if there is no preset with the specified ID.

***

*required permissions*: `users: "delete"`.

## Delete menu preset

> Delete a menu preset. Users assigned to it fall back to the dealer default.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"User","description":"End users belonging to the dealer: their profiles, sessions, balance transactions, menu presets, and multi-factor authentication settings. All resources under the /panel/user/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/user/menu/preset/delete":{"post":{"tags":["User"],"summary":"Delete menu preset","operationId":"userMenuPresetDelete","description":"Delete a menu preset. Users assigned to it fall back to the dealer default.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["preset_id"],"properties":{"preset_id":{"type":"integer","description":"Menu preset ID.","minimum":1}}}}}},"responses":{"200":{"$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

* 201 - Not found in the database - if there is no preset with the specified ID.

***

*required permissions*: `users: "update"`.

## Assign menu preset

> Assign a menu preset, either as the dealer default or to an explicit list of users.\
> \
> The \`target\` object is a discriminated union on \`type\`: \`default\` makes the preset the fallback for users with no explicit assignment, and \`users\` assigns it to up to 10000 named user IDs.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"User","description":"End users belonging to the dealer: their profiles, sessions, balance transactions, menu presets, and multi-factor authentication settings. All resources under the /panel/user/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"schemas":{"MenuPresetAssignmentTarget":{"description":"What the preset is assigned to. The shape depends on `type`.","oneOf":[{"$ref":"#/components/schemas/MenuPresetAssignmentAll"},{"$ref":"#/components/schemas/MenuPresetAssignmentUsers"}],"discriminator":{"propertyName":"type","mapping":{"default":"#/components/schemas/MenuPresetAssignmentAll","users":"#/components/schemas/MenuPresetAssignmentUsers"}}},"MenuPresetAssignmentAll":{"type":"object","title":"default","description":"Assign the preset as the dealer default, applying to users with no explicit assignment.","required":["type"],"properties":{"type":{"type":"string","enum":["default"]}}},"MenuPresetAssignmentUsers":{"type":"object","title":"users","description":"Assign the preset to an explicit list of users.","required":["type","ids"],"properties":{"type":{"type":"string","enum":["users"]},"ids":{"type":"array","description":"User IDs to assign the preset to. At most 10000.","maxItems":10000,"items":{"type":"integer","minimum":1}}}}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/user/menu/preset/assign":{"post":{"tags":["User"],"summary":"Assign menu preset","operationId":"userMenuPresetAssign","description":"Assign a menu preset, either as the dealer default or to an explicit list of users.\n\nThe `target` object is a discriminated union on `type`: `default` makes the preset the fallback for users with no explicit assignment, and `users` assigns it to up to 10000 named user IDs.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["preset_id","target"],"properties":{"preset_id":{"type":"integer","description":"Menu preset ID.","minimum":1},"target":{"$ref":"#/components/schemas/MenuPresetAssignmentTarget"}}}}}},"responses":{"200":{"$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

* 201 - Not found in the database - if there is no preset with the specified ID.

## Available menu items

*required permissions*: `users: "read"`.

{% hint style="info" %}
This operation lives at `panel/user/menu/item/list`, outside the `menu/preset/` path used by the rest of this page.
{% endhint %}

## List menu items

> List every menu item available for use when composing a preset.\
> \
> Note the path: this operation is at \`panel/user/menu/item/list\`, not under \`menu/preset/\`. Takes no parameters beyond the session credential.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"User","description":"End users belonging to the dealer: their profiles, sessions, balance transactions, menu presets, and multi-factor authentication settings. All resources under the /panel/user/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"schemas":{"MenuItemDestination":{"type":"object","description":"A menu item available for use when composing a preset.","readOnly":true,"properties":{"title":{"type":"string","description":"Localization key for the item title."},"destination":{"type":"string","description":"Application destination."}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/user/menu/item/list":{"post":{"tags":["User"],"summary":"List menu items","operationId":"userMenuItemList","description":"List every menu item available for use when composing a preset.\n\nNote the path: this operation is at `panel/user/menu/item/list`, not under `menu/preset/`. Takes no parameters beyond the session credential.","responses":{"200":{"description":"Available menu items","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"list":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/MenuItemDestination"}}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

Use this to discover the destinations available when composing a preset.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/navixy-api/panel-api/resources/user/preset.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
