Управление меню

С помощью этих методов вы можете собрать навигацию для сайта или приложения: создать корневое меню, добавить вложенные пункты и настроить их порядок.

Gigma хранит структуру меню. Ваш сайт получает готовое дерево через API получения меню и сам решает, как его отобразить.

Отправляйте запросы на изменение с вашего сервера и передавайте Bearer сотрудника. Для создания, изменения, удаления и перемещения пунктов нужно право edit-applications.

Подготовка

Подготовьте ID приложения и Bearer сотрудника с правом edit-applications. Если пункту нужны иконка или изображение, сначала загрузите файл и сохраните его ID. Передавайте только ID файлов своего проекта: API проверяет существование avatar_id и preview_id, но не проверяет их принадлежность проекту.

Корневой пункт задаёт имя меню. Создайте его без parent_id и передайте в slug постоянное имя, например navpanel.

Gigma не проверяет уникальность slug. Перед созданием получите список пунктов приложения и убедитесь, что выбранное имя корневого меню не занято. Не назначайте этот slug дочерним пунктам: API чтения возвращает первый найденный пункт с таким значением.

POST /api/applications/12/menu_items HTTP/1.1
Host: api.gigma.ru
Authorization: Bearer <employee_token>
Content-Type: application/json
Accept: application/json

{
	"name": "Главное меню",
	"slug": "navpanel"
}

В ответ вы получите созданный пункт. Сохраните его ID и передайте в parent_id дочернего пункта:

POST /api/applications/12/menu_items HTTP/1.1
Host: api.gigma.ru
Authorization: Bearer <employee_token>
Content-Type: application/json
Accept: application/json

{
	"name": "Каталог",
	"slug": "/catalog",
	"parent_id": 501
}

В примере 501 — ID корневого пункта из предыдущего ответа. Передавайте parent_id только пункта того же Application: API проверяет существование ID, но не принадлежность родителя приложению.

После этого сайт сможет получить всё дерево запросом GET /api/counterparty/menus/navpanel.

Что можно сделать

  • создать пункт — POST /api/applications/{id}/menu_items;
  • получить пункт — GET /api/applications/{id}/menu_items/{menu_item_id};
  • обновить пункт — PUT /api/applications/{id}/menu_items/{menu_item_id};
  • удалить пункт — DELETE /api/applications/{id}/menu_items/{menu_item_id};
  • получить список — GET /api/applications/{id}/menu_items;
  • получить дерево для административного интерфейса — GET /api/tables/applications/{id}/menu_items;
  • поднять пункт — POST /api/applications/{id}/menu_items/{menu_item_id}/up;
  • опустить пункт — POST /api/applications/{id}/menu_items/{menu_item_id}/down.

Создать пункт меню

Метод
POST
URL
https://api.gigma.ru/api/applications/{id}/menu_items
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}, Content-Type: application/json
Успешный ответ
200

Чтобы создать корневой пункт, не передавайте parent_id. Чтобы создать вложенный пункт, передайте ID родителя из того же приложения.

Если не передать order, Gigma добавит новый пункт в конец текущего уровня.

Параметры пути

  • id (integer, обязательный) — ID приложения.

Параметры запроса

  • name (string, обязательный) — название пункта.
  • slug (string, необязательный) — имя корневого меню или адрес дочерней ссылки; уникальность API не проверяет.
  • code (integer, необязательный) — код, уникальный в проекте.
  • parent_id (integer, необязательный) — ID родителя или null; используйте родителя того же приложения.
  • order (integer, необязательный) — позиция, начиная с 1.
  • avatar_id (integer, необязательный) — ID файла аватара или null.
  • preview_id (integer, необязательный) — ID файла превью или null.

Пример запроса

{
	"name": "Каталог",
	"slug": "/catalog",
	"code": 1002,
	"parent_id": 501,
	"order": 2,
	"avatar_id": null,
	"preview_id": null
}

Ответ

В ответ Gigma вернёт созданный пункт меню. Сохраните его ID, если планируете добавить дочерние пункты или изменить порядок.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права edit-applications или приложение принадлежит другому проекту.
  • 404 — приложение не найдено.
  • 422 — обязательное поле отсутствует, код уже занят, родитель или файл не найдены либо данные не прошли валидацию.

Получить пункт меню

Метод
GET
URL
https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}
Успешный ответ
200

Чтобы получить один пункт для просмотра или редактирования, передайте ID приложения и ID пункта.

Параметры пути

  • id (integer, обязательный) — ID приложения.
  • menu_item_id (integer, обязательный) — ID пункта меню.

Ответ

В ответ Gigma вернёт пункт меню и его связи.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права просмотра приложений или приложение принадлежит другому проекту.
  • 404 — приложение или пункт не найдены либо пункт относится к другому приложению.

Обновить пункт меню

Метод
PUT
URL
https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}, Content-Type: application/json
Успешный ответ
200

Чтобы изменить пункт, передайте только те поля, которые нужно обновить. Можно изменить название, ссылку, родителя, позицию, иконку и изображение.

Если меняете slug, сначала проверьте список пунктов приложения: уникальность этого поля API не проверяет. Если меняете parent_id, передавайте только ID пункта того же приложения.

Параметры пути

  • id (integer, обязательный) — ID приложения.
  • menu_item_id (integer, обязательный) — ID пункта меню.

Параметры запроса

Те же поля, что и в POST /api/applications/{id}/menu_items. Передайте только изменяемые поля.

Ответ

В ответ Gigma вернёт пункт меню с обновлёнными данными.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права edit-applications или приложение принадлежит другому проекту.
  • 404 — приложение или пункт не найдены либо пункт относится к другому приложению.
  • 422 — код уже занят, новый родитель или файл не найдены либо данные не прошли валидацию.

Удалить пункт меню

Метод
DELETE
URL
https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}
Успешный ответ
200

При удалении родителя Gigma удалит и его дочерние пункты. Чтобы сохранить дочерние пункты, сначала назначьте им другой parent_id.

Параметры пути

  • id (integer, обязательный) — ID приложения.
  • menu_item_id (integer, обязательный) — ID пункта меню.

Ответ

В ответ Gigma вернёт подтверждение удаления.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права edit-applications или приложение принадлежит другому проекту.
  • 404 — приложение или пункт не найдены либо пункт относится к другому приложению.

Получить список пунктов

Метод
GET
URL
https://api.gigma.ru/api/applications/{id}/menu_items
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}
Успешный ответ
200

Чтобы получить пункты приложения, отправьте запрос с его ID. В ответе находятся:

  • menuItems — все пункты приложения;
  • menuItems[].id — ID, который нужен для изменения, удаления и создания дочернего пункта;
  • menuItems[].slug — имя корневого меню или адрес пункта;
  • menuItems[].children — вложенные пункты;
  • menuItemsCount — количество элементов в menuItems.

Ответ не содержит parent_id и order. Для восстановления ID корневого пункта найдите его в menuItems по уникальному slug. Дочерний пункт ищите в children нужного родителя. Для готовой навигации сайта используйте API получения меню.

Параметры пути

  • id (integer, обязательный) — ID приложения.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права просмотра приложений или приложение принадлежит другому проекту.
  • 404 — приложение не найдено.

Получить меню для таблицы

Метод
GET
URL
https://api.gigma.ru/api/tables/applications/{id}/menu_items
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}
Успешный ответ
200

Этот метод пригодится для административного списка меню. Gigma вернёт конфигурацию столбцов, строки с полным путём до пункта и данные пагинации.

Параметры пути

  • id (integer, обязательный) — ID приложения.

Параметры запроса

  • query (string, необязательный) — поиск по названию пункта.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права просмотра приложений или приложение принадлежит другому проекту.
  • 404 — приложение не найдено.

Поднять пункт меню

Метод
POST
URL
https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}/up
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}
Успешный ответ
200

Чтобы переместить пункт выше, отправьте запрос с ID приложения и ID пункта. Gigma уменьшит order на 1, но не ниже 1.

Пункт перемещается только среди элементов того же уровня. Если он уже первый, Gigma вернёт пункт без изменения и ответит 200.

Параметры пути

  • id (integer, обязательный) — ID приложения.
  • menu_item_id (integer, обязательный) — ID пункта меню.

Ответ

В ответ Gigma вернёт пункт меню. Поле order в ответ не входит; изменение видно в порядке элементов при следующем получении меню.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права edit-applications или приложение принадлежит другому проекту.
  • 404 — приложение или пункт не найдены либо пункт относится к другому приложению.

Опустить пункт меню

Метод
POST
URL
https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}/down
Авторизация
Bearer сотрудника
Headers
Authorization: Bearer {token}
Успешный ответ
200

Чтобы переместить пункт ниже, отправьте запрос с ID приложения и ID пункта. Gigma увеличит order на 1, но не переместит пункт дальше последнего элемента того же уровня.

Если пункт уже последний, Gigma вернёт его без изменения и ответит 200.

Параметры пути

  • id (integer, обязательный) — ID приложения.
  • menu_item_id (integer, обязательный) — ID пункта меню.

Ответ

В ответ Gigma вернёт пункт меню. Поле order в ответ не входит; изменение видно в порядке элементов при следующем получении меню.

Ошибки

  • 401 — Bearer отсутствует или недействителен.
  • 403 — у сотрудника нет права edit-applications или приложение принадлежит другому проекту.
  • 404 — приложение или пункт не найдены либо пункт относится к другому приложению.