# Itecho ERP > Документация Itecho ERP и E-Commerce API: справочник методов, параметры запросов, примеры ответов. Полная документация API одним файлом. Источник на сайте: https://artypoul-docs-gigma-7b80.twc1.net/. Индекс: https://artypoul-docs-gigma-7b80.twc1.net/llms.txt Общие соглашения (auth-flow, headers, форматы данных, пагинация, фильтры, коды ошибок): https://artypoul-docs-gigma-7b80.twc1.net/conventions/ Базовый URL API: `https://api.gigma.ru/api` ## Содержание Всего endpoint'ов: 285 в 30 разделах. В оглавлении URL приведены без базового хоста. ### Общее - [Соглашения](https://artypoul-docs-gigma-7b80.twc1.net/conventions/) - [Энумы](https://artypoul-docs-gigma-7b80.twc1.net/enums/) - [Swagger UI](https://artypoul-docs-gigma-7b80.twc1.net/api-docs/) ### E-Commerce - [Авторизация](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F/) - `POST /api/counterparty/send_password` — Отправка звонка-сброса с паролем - `POST /api/counterparty/login` — Авторизация - `POST /api/counterparty/miniapps/{provider}/contact_auth` — Авторизация miniapp по подписанному контакту - `POST /api/counterparty/logout` — Выход контрагента из системы - `POST /api/counterparty/callback_auth/init` — Инициализация авторизации по callback (звонок) - `POST /api/counterparty/callback_auth/status` — Проверка статуса callback-авторизации - [Вспомогательные запросы](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B/) - `GET /api/counterparty/tags` — Получение списка популярных тегов - `GET /api/counterparty/search/popular` — Получение списка популярных поисковых запросов - `GET /api/counterparty/search/history` — Получение истории поисковых запросов - [Динамический контент](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82/) - `GET /api/counterparty/blocks/{code}` — Получение выбранного блока (по полю code) - `GET /api/counterparty/blocks/id/{identifier}` — Получение выбранного блока (по полю identifier) - [Заказы](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D1%8B/) - `POST /api/counterparty/orders/precalculate` — Предварительный расчёт стоимости заказа - `GET /api/counterparty/orders` — Получение списка заказов - `POST /api/counterparty/orders` — Создание заказа - `GET /api/counterparty/orders/{id}` — Получение выбранного заказа - `GET /api/counterparty/subscriptions` — Получение списка подписок - `GET /api/counterparty/subscriptions/{id}/checkout` — Оформление (checkout) подписки - `POST /api/counterparty/subscriptions` — Создание подписки - `PUT /api/counterparty/subscriptions/{id}` — Обновление подписки - `POST /api/counterparty/subscriptions/{id}/cancel` — Отмена подписки - `POST /api/counterparty/subscriptions/{id}/resume` — Возобновление подписки - `GET /api/counterparty/subscriptions/{id}/payments` — Получение платежей по подписке - `POST /api/counterparty/subscriptions/{id}/retry-payment` — Повторная попытка оплаты подписки - [Контрагент (клиент)](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%20(%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82)/) - `GET /api/counterparty` — Получение текущего контрагента (клиента) - `PUT /api/counterparty` — Обновление данных текущего контрагента (клиента) - `DELETE /api/counterparty` — Удаление текущего контрагента (клиента) - `POST /api/counterparty/phone/request_change` — Запрос на смену номера телефона - `POST /api/counterparty/phone/verify_change` — Подтверждение смены номера телефона - [Навигационная панель](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%9D%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D1%8C/) - `GET /api/counterparty/menus/{slug?}` — Получение элементов навигационной панели - [Справочники](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8/) - `GET /api/counterparty/prices` — Получение списка цен - `GET /api/counterparty/categories` — Получение списка категорий - `GET /api/counterparty/brands` — Получение списка брендов - `GET /api/counterparty/countries` — Получение списка стран - `GET /api/counterparty/payment_types` — Получение списка способов оплаты - `GET /api/counterparty/delivery_types` — Получение способов доставки - `GET /api/counterparty/delivery_types/{id}/subtypes` — Получение списка подкатегорий доставки - `GET /api/counterparty/delivery_types/{id}/subtypes/{id}/params` — Получение списка параметров подкатегорий доставки - `GET /api/counterparty/shops` — Получение списка магазинов (пунктов выдачи) - `GET /api/counterparty/slides` — Получение списка рекламных слайдов - `POST /api/counterparty/search_address` — Поиск адресов (Dadata) - `GET /api/counterparty/dictionaries` — Получение списка справочников - [Страницы](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B/) - `GET /api/counterparty/page_types` — Получение списка типов страниц - `GET /api/counterparty/pages` — Получение списка страниц - `GET /api/counterparty/pages/{slug}` — Получение выбранной страницы - [Товары](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%D1%8B/) - `GET /api/counterparty/products` — Получение списка товаров - `GET /api/counterparty/products/favourites` — Получение списка избранных товаров - `POST /api/counterparty/products/favourites` — Добавление товара в избранные - `DELETE /api/counterparty/products/favourites/{id}` — Удаление товара из избранных - [Уведомления](https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A3%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/) - `GET /api/counterparty/notifications` — Получение списка уведомлений ### ERP - [Авторизация](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F/) - `POST /api/send_password` — Отправка пароля на электронную почту - `POST /api/login` — Авторизация - `GET /api/user` — Получение текущего пользователя - `POST /api/user/logout` — Выход пользователя из системы - [Бизнесы](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%91%D0%B8%D0%B7%D0%BD%D0%B5%D1%81%D1%8B/) - `GET /api/branches` — Список бизнесов - `GET /api/tables/branches` — Таблица бизнесов (для UI с колонками и пагинацией) - `GET /api/branches/{id}` — Получение бизнеса по ID - `POST /api/branches` — Создание бизнеса - `PUT /api/branches/{id}` — Изменение бизнеса - `DELETE /api/branches/{id}` — Удаление бизнеса - `GET /api/branches/{id}/bank_requisites` — Список реквизитов бизнеса - `POST /api/branches/{id}/bank_requisites` — Добавление реквизита бизнеса - `PUT /api/branches/{id}/bank_requisites/{requisiteId}` — Изменение реквизита бизнеса - `GET /api/branches/{id}/history` — История изменений бизнеса - `GET /api/branches/{branchId}/bank_requisites/{bankId}/integrations` — Список интеграций реквизита - `PUT /api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationsId}` — Изменение интеграции реквизита - `GET /api/integrations/{integrationId}` — Описание интеграции по ID - `GET /api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationId}/parameters` — Параметры (значения) интеграции реквизита - `POST /api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationsId}/parameters` — Добавление значения параметра интеграции - `DELETE /api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationId}/parameters/{parameterId}` — Удаление значения параметра интеграции - `GET /api/responsible_users` — Список ответственных пользователей (для фильтра) - `GET /api/users` — Поиск пользователя по строке - [Блоки](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%91%D0%BB%D0%BE%D0%BA%D0%B8/) - `GET /api/tables/applications/{id}/blocks` — Получение списка блоков (табличное представление) - `GET /api/applications/{id}/blocks` — Получение списка блоков - `GET /api/applications/{id}/blocks/{id}` — Получение выбранного блока - `POST /api/applications/{id}/blocks` — Добавление блока - `PUT /api/applications/{id}/blocks/{id}` — Редактирование блока - `DELETE /api/applications/{id}/blocks/{id}` — Удаление блока - `GET /api/applications/{id}/blocks/{id}/history` — Получение истории изменений по блоку - [Вспомогательные запросы](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B/) - `POST /api/orders/calculator` — Расчёт стоимости товара - `POST /api/search_address` — Поиск адреса - `POST /api/search_bank` — Поиск банка - `POST /api/search_company` — Поиск компании - `GET /api/cities` — Список городов - `GET /api/cities/{id}` — Город по ID - `POST /api/search_nomenclature` — Поиск номенклатуры - [Задачи](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8/) - `GET /api/tables/tasks` — Получение списка задач (табличное представление) - `GET /api/tasks` — Получение списка задач (JSON) - `GET /api/tasks/{id}` — Получение выбранной задачи - `POST /api/tasks` — Создание задачи - `PUT /api/tasks/{id}` — Редактирование задачи - [Заказы](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D1%8B/) - `GET /api/tables/orders` — Получение списка заказов (табличное представление) - `GET /api/orders/{id}` — Получение выбранного заказа - `POST /api/orders` — Добавление заказа - `PUT /api/orders/{id}` — Редактирование заказа - `DELETE /api/orders/{id}` — Удаление заказа ⚠ backend bug - `GET /api/tables/orders/{id}/nomenclatures` — Получение содержимого заказа (табличное представление) - `POST /api/orders/{id}/nomenclatures` — Добавление товаров в заказ (= создание Reservation) ⚠ backend bug - `PUT /api/orders/{id}/nomenclatures/{nomenclatureId}` — Обновление товаров в заказе - `DELETE /api/orders/{id}/nomenclatures/{nomenclatureId}` — Удаление товаров из заказа - `GET /api/tables/orders/{id}/files` — Получение списка файлов (табличное представление) - `POST /api/orders/{id}/files` — Добавление файла - `GET /api/orders/{id}/history` — Получение истории изменений по заказу - `POST /api/orders/{id}/request-refund` — Запрос возврата по заказу - [Контрагенты](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%8B/) - `GET /api/counterparties` — Список контрагентов - `GET /api/tables/counterparties` — Таблица контрагентов (для UI с колонками и пагинацией) - `GET /api/counterparties/{id}` — Получение контрагента по ID - `POST /api/counterparties` — Создание контрагента - `PUT /api/counterparties/{id}` — Изменение контрагента - `DELETE /api/counterparties/{id}` — Удаление контрагента - `GET /api/counterparties/{id}/bank_requisites` — Список банковских реквизитов контрагента - `POST /api/counterparties/{id}/bank_requisites` — Добавление банковского реквизита - `PUT /api/counterparties/{id}/bank_requisites/{requisiteId}` — Изменение банковского реквизита - `GET /api/counterparties/{id}/contacts` — Список контактов контрагента - `POST /api/counterparties/{id}/contacts` — Добавление контакта - `PUT /api/counterparties/{id}/contacts/{contactId}` — Изменение контакта - `GET /api/counterparties/{id}/history` — История изменений контрагента - [Магазины](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9C%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D1%8B/) - `GET /api/tables/shops` — Получение списка магазинов (табличное представление) - `GET /api/shops` — Получение списка магазинов - `POST /api/shops` — Добавление магазина - `PUT /api/shops/{id}` — Обновление выбранного магазина - `GET /api/shops/{id}` — Получение выбранного магазина - `DELETE /api/shops/{id}` — Удаление выбранного магазина - `GET /api/shops/{id}/history` — Получение истории изменений по выбранному магазину - `GET /api/shops/{id}/hours` — Получение списка дней и часов работы выбранного магазина - `POST /api/shops/{id}/hours` — Добавление дней и часов работы выбранного магазина - `PUT /api/shops/{id}/hours/{id}` — Обновление дней и часов работы выбранного магазина - `DELETE /api/shops/{id}/hours/{id}` — Удаление выбранных дней и часов работы магазина - `GET /api/shops/{id}/holidays` — Получение графика работы в праздничные дни выбранного магазина - `POST /api/shops/{id}/holidays` — Обновление графика работы в праздничные дни выбранного магазина - `GET /api/shops/{id}/exceptions` — Получение списка дней-исключений в работе выбранного магазина - `POST /api/shops/{id}/exceptions` — Добавление промежутка дней-исключений для выбранного магазина - `PUT /api/shops/{id}/exceptions/{id}` — Обновление промежутка дней-исключений для выбранного магазина - `DELETE /api/shops/{id}/exceptions/{id}` — Удаление промежутка дней-исключения для выбранного магазина - [Меню](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9C%D0%B5%D0%BD%D1%8E/) - `GET /api/menus` — Меню текущего пользователя - `GET /api/menus/default/items` — Пункты меню по умолчанию - `POST /api/users/{id}/attach_menu` — Скопировать меню текущего пользователя указанному - `POST /api/attach_menu_to_project` — Скопировать меню текущего пользователя всем пользователям проекта - `POST /api/users/{id}/create_menu_from_user_items` — Сохранить меню пользователя как шаблон - [Номенклатура](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9D%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D0%B0/) - `GET /api/tables/categories` — Получение списка категорий - `GET /api/tables/categories/{id}` — Получение выбранной категории - `PUT /api/categories/{id}` — Обновление выбранной категории - `POST /api/categories` — Добавление категории - `GET /api/categories/{id}/history` — Получение истории изменений категории - `GET /api/tags` — Получение списка тегов - `GET /api/nomenclature_types` — Получение списка типов номенклатуры - `GET /api/nomenclature_kinds` — Получение списка видов номенклатуры - `GET /api/tables/nomenclatures` — Получение списка номенклатуры (табличное представление) - `GET /api/nomenclatures` — Получение списка номенклатуры - `POST /api/nomenclatures` — Добавление позиции номенклатуры - `PUT /api/nomenclatures/{id}` — Обновление позиции номенклатуры - `GET /api/nomenclatures/{id}` — Получение выбранной позиции номенклатуры - `GET /api/nomenclatures/{id}/history` — Получение истории изменений позиции номенклатуры - `POST /api/nomenclatures/export` — Экспорт файла номенклатуры - `POST /api/nomenclatures/import` — Импорт файла номенклатуры - [Остатки](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9E%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8/) - `GET /api/tables/inventories` — Получение списка остатков (табличное представление) - `GET /api/inventories` — Получение списка остатков (JSON) - `POST /api/inventories` — Создание записи остатка - `PUT /api/inventories/{id}` — Обновление записи остатка - `GET /api/inventories/{id}` — Получение выбранного остатка - `GET /api/inventories/{id}/history` — Получение истории изменений остатка - `POST /api/inventories/upload` — Импорт остатков - [Пользователи](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8/) - `GET /api/users` — Поиск пользователей - `GET /api/managers` — Список менеджеров (упрощённый) - `GET /api/responsible_users` — Список ответственных пользователей - [Приложения](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/) - `GET /api/applications` — Получение списка приложений - `GET /api/applications/{id}` — Получение выбранного приложения - `GET /api/applications/{id}/webhooks` — Получение списка вебхуков - `POST /api/applications/{id}/webhooks` — Создание вебхука - `GET /api/applications/{id}/webhooks/{webhook_id}` — Получение выбранного вебхука - `PATCH /api/applications/{id}/webhooks/{webhook_id}` — Обновление вебхука - `DELETE /api/applications/{id}/webhooks/{webhook_id}` — Удаление вебхука - `GET /api/applications/{id}/webhooks/{webhook_id}/deliveries` — Получение доставок вебхука - `POST /api/applications/{id}/webhooks/{webhook_id}/resend` — Повторная доставка вебхука - `POST /api/applications/{id}/webhooks/{webhook_id}/rotate-secret` — Ротация секрета вебхука - `GET /api/tables/applications/{id}/categories` — Получение списка категорий приложения (табличное) - `GET /api/applications/{id}/categories` — Получение списка категорий приложения - `POST /api/applications/{id}/categories` — Добавление категории в приложение - `GET /api/applications/{id}/categories/{category_id}` — Получение категории приложения - `DELETE /api/applications/{id}/categories/{category_id}` — Удаление категории из приложения - `POST /api/applications/{id}/categories/{category_id}/up` — Повышение приоритета категории - `POST /api/applications/{id}/categories/{category_id}/down` — Понижение приоритета категории - `GET /api/tables/applications/{id}/brands` — Получение списка брендов приложения (табличное) - `GET /api/applications/{id}/brands` — Получение списка брендов приложения - `POST /api/applications/{id}/brands` — Добавление бренда в приложение - `GET /api/applications/{id}/brands/{brand_id}` — Получение бренда приложения - `DELETE /api/applications/{id}/brands/{brand_id}` — Удаление бренда из приложения - `POST /api/applications/{id}/brands/{brand_id}/up` — Повышение приоритета бренда - `POST /api/applications/{id}/brands/{brand_id}/down` — Понижение приоритета бренда - `GET /api/tables/applications/{id}/menu_items` — Получение списка пунктов меню (табличное) - `POST /api/applications/{id}/menu_items` — Создание пункта меню - `PUT /api/applications/{id}/menu_items/{menu_item_id}` — Обновление пункта меню - `DELETE /api/applications/{id}/menu_items/{menu_item_id}` — Удаление пункта меню - `POST /api/applications/{id}/menu_items/{menu_item_id}/up` — Повышение приоритета пункта меню - `POST /api/applications/{id}/menu_items/{menu_item_id}/down` — Понижение приоритета пункта меню - [Промоакции](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9F%D1%80%D0%BE%D0%BC%D0%BE%D0%B0%D0%BA%D1%86%D0%B8%D0%B8/) - `GET /api/promotions` — Получение списка промоакций - `GET /api/discounts` — Получение списка скидок - `POST /api/discounts` — Создание скидки - `GET /api/discounts/{id}` — Получение выбранной скидки - `PUT /api/discounts/{id}` — Обновление скидки - `DELETE /api/discounts/{id}` — Удаление скидки - `GET /api/discounts/stats` — Статистика скидок - `POST /api/discounts/{id}/pause` — Поставить скидку на паузу - `POST /api/discounts/{id}/activate` — Активировать скидку - `POST /api/discounts/{id}/archive` — Архивировать скидку - `GET /api/discounts/{id}/usages` — Использования скидки - [Резервирование](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/) - `GET /api/tables/reservations` — Таблица резервов - `DELETE /api/reservations/{id}` — Удаление резерва ⚠ endpoint не существует на бэке - [Склады](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4%D1%8B/) - `GET /api/tables/warehouses` — Получение списка складов - `GET /api/warehouses/{id}` — Получение выбранного склада - `POST /api/warehouses` — Добавление склада - `PUT /api/warehouses/{id}` — Редактирование склада - `DELETE /api/warehouses/{id}` — Удаление склада - `GET /api/warehouses/{id}/integrations` — Получение списка интеграций - `PUT /api/warehouses/{id}/integrations/{id}` — Обновление статуса выбранной интеграции - `GET /api/warehouses/{id}/integrations/{id}/parameters` — Получение списка параметров интеграции - `POST /api/warehouses/{id}/integrations/{id}/parameters` — Добавление параметров для выбранной интеграции - `POST /api/warehouses/{id}/integrations/{id}/parameters/{id}` — Удаление параметров из выбранной интеграции - `GET /api/warehouses/{id}/history` — Получение истории изменений - [Справочники](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8/) - `GET /api/screens` — Получение списка экранов, к которым применяется проверка права на доступ - `GET /api/screens/{id}` — Получение выбранного экрана со списком прав доступа - `GET /api/counterparty_types` — Получение списка с типами контрагентов - `GET /api/counterparty_types/{id}` — Получение выбранного типа контрагента - `GET /api/departments` — Получение списка отделов - `GET /api/departments/{id}` — Получение выбранного отдела - `POST /api/departments` — Добавление отдела - `PUT /api/departments/{id}` — Редактирование отдела - `DELETE /api/departments/{id}` — Удаление выбранного отдела - `GET /api/roles` — Получение списка ролей пользователей - `GET /api/roles/{id}` — Получение выбранной роли пользователя - `POST /api/roles` — Добавление роли пользователя - `PUT /api/roles/{id}` — Редактирование роли пользователя - `DELETE /api/roles/{id}` — Удаление выбранной роли пользователя - `GET /api/file_types` — Получение списка типов файлов - `GET /api/file_types/{id}` — Получение выбранного типа файла - `GET /api/permissions` — Получение списка прав доступа - `GET /api/permissions/{id}` — Получение выбранного права доступа - `POST /api/permissions` — Добавление права доступа - `PUT /api/permissions/{id}` — Редактирование права доступа - `DELETE /api/permissions/{id}` — Удаление выбранного права доступа - `GET /api/call_statuses` — Получение списка статусов звонков - `GET /api/call_statuses/{id}` — Получение выбранного статуса звонка - `GET /api/order_statuses` — Получение списка статусов заказов - `GET /api/order_statuses/{id}` — Получение выбранного статуса заказа - `GET /api/task_statuses` — Получение списка статусов задач - `GET /api/task_statuses/{id}` — Получение выбранного статуса задачи - `GET /api/cities` — Получение списка городов - `GET /api/cities/{id}` — Получение выбранного города - `GET /api/countries` — Получение списка стран - `GET /storage_units` — Получение списка единиц измерения - `GET /storage_units/{id}` — Получение выбранной единицы измерения - `GET /api/brands` — Получение списка брендов - `GET /api/brands/{id}` — Получение выбранного бренда - `POST /api/brands` — Добавление бренда - `PUT /api/brands/{id}` — Обновление бренда - `GET /api/counterparty/delivery_types` — Получение списка способов доставки - `GET /api/counterparty/shops` — Получение списка магазинов (пунктов выдачи) - `GET /api/objects` — Получение списка объектов - `GET /api/sales_channels` — Получение списка каналов продаж - `GET /api/vats` — Получение списка НДС - `GET /api/vats/{id}` — Получение выбранного значения НДС - `GET /api/page_types` — Получение списка типов страниц - `GET /api/page_types/{id}` — Получение выбранного типа страницы - `GET /api/integration_types` — Получение списка типов интеграций - `GET /api/integration_types/{id}` — Получение выбранного типа интеграции - `GET /api/integrations` — Получение списка интеграций - `GET /api/integrations/{id}` — Получение выбранной интеграции - `GET /api/settings` — Получение настроек - `GET /api/settings/{id}` — Получение выбранной настройки - `GET /api/delivery_types` — Получение списка типов доставки - `GET /api/block_types` — Получение списка типов блоков - `GET /api/block_types/{id}` — Получение выбранного типа блока - [Страницы](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B/) - `GET /api/tables/pages` — Получение списка страниц (табличное представление) - `GET /api/pages/{id}` — Получение выбранной страницы (контента) - `POST /api/pages` — Добавление страницы - `PUT /api/pages/{id}` — Редактирование страницы (контента) - `DELETE /api/pages/{id}` — Удаление страницы (контента) - `GET /api/pages/{page}/history` — Получение истории изменений страницы - `GET /api/page_tags` — Получение списка тегов - [Стратегии продаж](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%D0%B4%D0%B0%D0%B6/) - `GET /api/sales_strategies` — Список стратегий продаж - `GET /api/sales_strategies/{id}` — Стратегия продаж по ID - [Файлы](https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B/) - `POST /api/files` — Загрузка файла - `GET /api/files/{id}` — Получение файла по ID - `DELETE /api/files/{id}` — Удаление файла - `GET /api/file_types` — Список типов файлов - `GET /api/file_types/{id}` — Тип файла по ID # Общее --- ## Соглашения Source: https://artypoul-docs-gigma-7b80.twc1.net/conventions/ # Соглашения Базовые правила, общие для всех endpoint'ов. Если в конкретном методе что-то не описано — значит работает по этому документу. > 💡 Для значений ID, передаваемых в `*_id`-поля (`order_status_id`, `delivery_type_id`, `role_id`, `file_type_id`, …), см. отдельный справочник [Энумы](/enums/). ## Базовый URL ``` https://api.gigma.ru/api ``` Все пути в документации указаны полностью (например `https://api.gigma.ru/api/login`), но в реальном клиенте обычно используется база `https://api.gigma.ru/api` + относительный путь endpoint'а. ## Заголовки запроса Минимальный набор для любого запроса с телом: ```http Accept: application/json Content-Type: application/json ``` Для авторизованных запросов добавляется: ```http Authorization: Bearer ``` Для загрузки файлов (`POST /api/files`, `POST /api/orders/{id}/files`, …) `Content-Type` меняется на `multipart/form-data`.

Авторизация

1. **Получить токен**: `POST /api/login` (ERP) или `POST /api/counterparty/login` (E-Commerce). 2. **Сохранить** `access_token.value` (например в localStorage). 3. **Слать в каждом последующем запросе**: ```http Authorization: Bearer ``` 4. **Окончание действия токена** — `access_token.expires_at` (ISO 8601). По истечению или после `401 Unauthenticated` нужно повторить шаг 1. Подробности — [ERP/Авторизация](/ERP/Авторизация/) и [E-Commerce/Авторизация](/E-Commerce/Авторизация/). ### Формат Bearer-токена Бэкенд — Laravel Sanctum. Каждый токен имеет вид: ``` | ``` Например: `28|dCWBGIqC9algoNXr6NVVg9D2fKWBaq7BJkRFyxq009cd040b` - **``** — целое число переменной длины (1, 28, 1024, …). Это первичный ключ записи токена в БД. - **`|`** — обязательный разделитель. Без него токен невалиден. - **``** — секретная часть, alphanumeric. > ⚠ При хранении токена в файлах/таблицах/env-переменных следите за тем, чтобы `|` не потерялся. CSV, INI-парсеры и некоторые шеллы могут его съесть. Корректное хранение: целиком в quoted-строке или в переменной.

Справочники: концепт → endpoint

Имена справочных endpoint'ов не всегда предсказуемы (например, единицы измерения это `/api/storage_units`, а не `/api/units`). Полная карта: | Концепт | Endpoint | Описание | |---|---|---| | Статусы заказов | `GET /api/order_statuses` | См. [Энумы](/enums/#order-statuses) | | Способы доставки | `GET /api/delivery_types` | + подтипы `/api/delivery_types/{id}/subtypes` | | Способы оплаты | `GET /api/payment_types` | — | | Типы контрагентов | `GET /api/counterparty_types` | Физлицо / юрлицо / розница | | Менеджеры | `GET /api/managers` | Упрощённый список для фильтров | | Ответственные | `GET /api/responsible_users` | Для фильтра «Ответственный» в бизнесах | | Поиск пользователей | `GET /api/users?query=…` | Полный объект, с ролью и filiale | | Роли | `GET /api/roles` | См. [Энумы](/enums/#roles) | | Права доступа | `GET /api/permissions` | См. [Энумы](/enums/#permissions) | | Экраны | `GET /api/screens` | См. [Энумы](/enums/#screens) | | Отделы | `GET /api/departments` | — | | Бизнесы | `GET /api/branches` | НЕ `/api/businesses` | | Города | `GET /api/cities` | — | | Страны | `GET /api/countries` | — | | Бренды | `GET /api/brands` | — | | Категории | `GET /api/categories` | — | | Объекты | `GET /api/objects` | — | | Типы номенклатуры | `GET /api/nomenclature_types` | — | | Виды номенклатуры | `GET /api/nomenclature_kinds` | НЕ `/api/kinds`, НЕ `/api/nomenclatures/kinds` | | Единицы измерения | `GET /api/storage_units` | **НЕ `/api/units`** | | Ставки НДС | `GET /api/vats` | **НЕ `/api/vat`** | | Каналы продаж | `GET /api/sales_channels` | — | | Стратегии продаж | `GET /api/sales_strategies` | См. [ERP/Стратегии продаж](/ERP/Стратегии%20продаж/) | | Типы файлов | `GET /api/file_types` | См. [Энумы](/enums/#file-types) | | Типы страниц | `GET /api/page_types` | — | | Поиск адреса | `POST /api/search_address` | Тело: `{ query }` | | Поиск банка | `POST /api/search_bank` | Тело: `{ query }` | | Поиск компании | `POST /api/search_company` | Тело: `{ field: "name"\|"inn"\|"ogrn", query }` | | Меню (текущего юзера) | `GET /api/menus`, `GET /api/menus/default/items` | См. [ERP/Меню](/ERP/Меню/) | > Карта живая — список справочников может расти. Если нужного концепта нет в таблице, не угадывайте plural/singular — спросите бэк. ## Форматы данных | Тип | Формат | Пример | |---|---|---| | Дата | ISO 8601 (`YYYY-MM-DD`) | `"2024-04-02"` | | Дата + время | ISO 8601 с микросекундами в UTC | `"2024-04-03T07:07:11.000000Z"` | | Числа | JSON number (без кавычек) или string для «денежных» (см. ниже) | `42`, `"2100.00"` | | Денежные суммы | Часто приходят как **строка** с фиксированной точностью | `"2100.00"` | | Boolean | `true` / `false`, иногда `1` / `0` для legacy-полей (например `is_active`) | `true`, `1` | | Локаль | `ru-RU` (русский интерфейс) | — | | Кодировка | UTF-8 везде, в JSON | — | | Идентификаторы | `int` (auto-increment) | `42` | ## Пагинация Используется стандартный Laravel-пагинатор. Endpoint'ы вида `GET /api/tables/...` и `GET /api/.../history` возвращают пагинацию. #### Query-параметры - `page` *(int, опционально)* — номер страницы (с 1) - `per_page` *(int, опционально)* — размер страницы (по умолчанию 15) #### Структура ответа ```json { "items": [ /* массив записей */ ], "pagination": { "total": 42, "per_page": 15, "current_page": 1, "last_page": 3, "from": 1, "to": 15 } } ``` Для history-endpoint'ов пагинатор может приходить в развёрнутом виде с `links[]`, `first_page_url`, `next_page_url` и т.п. — см. [ERP/Контрагенты → история](/ERP/Контрагенты/#counterparty-history). ## Фильтры Передаются как query-параметры. Соглашения: | Тип фильтра | Формат | Пример | |---|---|---| | Простое поле | `?field=value` | `?is_company=true` | | Массив | `?field[]=v1&field[]=v2` | `?counterparty_type_id[]=2&counterparty_type_id[]=3` | | Диапазон дат | `?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD` | `?date_from=2024-01-01&date_to=2024-12-31` | | Сравнение | `?credit_gt=100&credit_lt=1000` | `_gt` = greater, `_lt` = less | | Поиск | `?query=строка` | `?query=иванов` | Кириллица в `query` должна быть URL-encoded.

Коды ответа

| Код | Когда | Тело | |---|---|---| | **200 OK** | Успешное чтение или обновление | endpoint-specific | | **201 Created** | Успешное создание объекта (POST на коллекцию) | endpoint-specific, обычно сам объект | | **204 No Content** | Успешное удаление без тела ответа | пустое (агент должен НЕ парсить тело) | | **401 Unauthenticated** | Нет / невалидный / протухший токен | `{ "message": "Unauthenticated." }` — нужно перелогиниться | | **403 Forbidden** | Токен валидный, но нет прав | `{ "message": "..." }` — обычно проверить `permissions` пользователя | | **422 Unprocessable Entity** | Валидация полей не прошла | `{ "errors": { "field_name": ["сообщение"] }, "message": "..." }` | | **429 Too Many Requests** | Превышение rate limit | `{ "message": "Too Many Attempts." }` | | **500 Internal Server Error** | Внутренняя ошибка | `{ "message": "Server error" }` (без подробностей в проде) | > ⚠ Не делайте жёсткой проверки `status === 200` на write-запросах — `POST /api/` обычно возвращает **201**, а `DELETE` — **204**. Используйте диапазон `2xx`. #### Пример 422 ```json { "errors": { "password": ["The password field is required."], "phone_1": ["The phone 1 must be at least 11 characters."], "products.0.id": ["The selected products.0.id is invalid."] }, "message": "The given data was invalid." } ``` > Ключи могут быть вложенными через точку (`products.0.id`) — для массивов в теле. Per-method примеры реальных ключей — в соответствующих endpoint'ах. #### Обработка на стороне клиента В `event_ai` (admin-фронт) принят такой паттерн (`src/Redux/api/index.ts`): - На **401 Unauthenticated** — очистить localStorage, редирект на `/authentication/sign-in`. - На **403** — редирект на `/profile` через 3 секунды. - На **422** — показать пользователю по полям из `errors`. - На остальные `4xx`/`5xx` с `{ message }` — показать toast. ## Rate limits Бэкенд использует стандартный Laravel-throttle (`throttle:api` middleware). Дефолт фреймворка — **60 запросов в минуту на пользователя/IP**. Точное значение в проде не подтверждено; для надёжности закладывайте backoff: - При **429** ждать минимум 60 секунд (или значение из `Retry-After` если придёт). - Для массовых импортов — не более 1 запроса в секунду на токен. ## Идемпотентность Стандартной поддержки `Idempotency-Key` **нет**. POST-запросы создания объектов не идемпотентны: повторный вызов создаст дубль. Безопасно повторять: - `GET` — всегда - `DELETE` — да (вторая попытка вернёт 404, но состояние корректно) - `PUT` — да, заменяет объект целиком Требует осторожности: - `POST` на коллекцию — НЕ повторять без проверки, что прошлый запрос провалился до создания объекта ## Webhooks **Не поддерживаются.** Бэкенд не отправляет push-уведомления о смене состояния заказов / контрагентов / номенклатуры. Для отслеживания изменений — polling через GET-endpoint раз в N секунд. Адекватный интервал — 30–60 секунд (учитывая rate limit). ## Версионирование URL URL не версионируется. Префикса вида `/api/v1/…` или `/api/v2/…` **нет** — все endpoint'ы живут под единым корнем `https://api.gigma.ru/api`. Изменения API накатываются прямо на этот корень; следить за breaking changes можно через [release notes на docs.gigma.ru](https://docs.gigma.ru/) (когда появятся) или эмпирически — мониторингом 4xx/5xx на ключевых endpoint'ах. --- ## Энумы Source: https://artypoul-docs-gigma-7b80.twc1.net/enums/ # Энумы Большинство ID в API ссылаются на справочники в БД. Значения могут отличаться между средами, поэтому в боевом коде надёжнее **один раз дёрнуть list-endpoint и закэшировать map** `id → name`. Ниже — снимки справочников + указатель «откуда брать живые значения». ## Где взять актуальные значения

| Поле в запросе | List-endpoint (GET) | Описание | Источник | |---|---|---|---| | `order_status_id` | `/api/order_statuses` | Статус заказа | [таблица ниже](#order-statuses) | | `delivery_type_id` | `/api/delivery_types` | Способ доставки | динамический | | `payment_type_id` | `/api/payment_types` | Способ оплаты | динамический | | `counterparty_type_id` | `/api/counterparty_types` | Тип контрагента (физ/юр/розница…) | [таблица ниже](#counterparty-types) | | `file_type_id` | `/api/file_types` | Тип файла | [таблица ниже](#file-types) (хардкод) | | `role_id` (user) | `/api/roles` | Роль сотрудника | [таблица ниже](#roles) | | `permission ids` | `/api/permissions` | Право доступа | [таблица ниже](#permissions) | | `screen.id` | — *(возвращается в permissions)* | Экран в админке | [таблица ниже](#screens) | | `department_id` | `/api/departments` | Отдел | динамический | | `category_id` | `/api/categories` | Категория номенклатуры | динамический | | `brand_id` | `/api/brands` | Бренд | динамический | | `country_id` | `/api/countries` | Страна | динамический | | `city_id` | `/api/cities` | Город | динамический | | `vat_id` | `/api/vats` | Ставка НДС | динамический | | `sales_channel_id` | `/api/sales_channels` | Канал продаж | динамический | | `sales_strategy_id` | `/api/sales_strategies` | Стратегия продаж | динамический | | `nomenclature_type_id` | `/api/nomenclature_types` | Тип номенклатуры | динамический | | `nomenclature_kind_id` | `/api/nomenclature_kinds` | Вид номенклатуры | динамический | | `object_id` | `/api/objects` | Объект | динамический | | `unit_id` | `/api/units` | Единица измерения | динамический |

Статусы заказа

10 значений из дефолтного seed'а (`database/seeders/OrderStatusSeeder.php` в `itecho-erp-backend`) — это **проектно-производственная** вертикаль. ID могут разниться между средами, поэтому для отображения fetch'и через `/api/order_statuses`. Источник в `event_ai`: [`src/utils/orderStatusTone.ts`](https://github.com/Artypoul/event_ai/blob/main/src/utils/orderStatusTone.ts). > **⚠ Для e-commerce / оплаты — другие статусы.** Платёжный поток (YooKassa) использует **захардкоженные ID**: `2` = ожидание оплаты, `22` = оплачен, `6` = отменён. Для отслеживания оплаты ориентируйтесь на эти ID, а не на названия из таблицы ниже. См. полную таблицу констант в [erp-rules §12.1](/erp-rules.txt). | Название | Tone | Семантика | |---|---|---| | `Расчёт` | neutral | Заказ в работе, формируется КП | | `Коммерческое предложение` | info | Отправлено КП клиенту | | `Счёт` | info | Выставлен счёт | | `Ожидание оплаты` | info | Ждём оплату | | `Замер` | info | Замер на объекте | | `Ожид. матер.` | info | Ожидание материалов | | `Производство` | info | Производство | | `Доставка` | info | Доставка клиенту | | `Монтаж` | info | Монтаж у клиента | | `Приёмка` | pos | Приёмка работ, финал | **Tone** — внутренний маркер для UI: | Tone | Значение | CSS-переменная | |---|---|---| | `neutral` | Нейтрально | `--gg-ink-500` | | `info` | В процессе | `--gg-accent` | | `pos` | Успех / завершено | `--gg-pos` | | `neg` | Отменено / ошибка | `--gg-neg` | Эвристика для нестандартных статусов (тот же файл): - содержит `отмен` → `neg` - содержит `готов`, `выполн`, `оплач` → `pos` - содержит `работе`, `процессе`, `ожидан` → `info` - иначе → `neutral`

Типы файлов

Хардкод в `event_ai/src/constants/file-types.ts` — стабильные ID, можно полагаться: | ID | Название | Константа в TS | Когда | |---|---|---|---| | 1 | Трудовой договор | `EMPLOYMENT_CONTRACT_ID` | Документы сотрудника | | 2 | Аватар | `AVATAR` | Аватар пользователя/контрагента | | 3 | Файл заказа | `ORDER_FILE` | Вложения к заказу (`POST /api/orders/{id}/files`) | Полный список — `GET /api/file_types`. Используется в `file_type_id` при `POST /api/files`.

Типы контрагентов

Дефолтный seed (наблюдалось в JSON-примерах): | ID | Название | Назначение | |---|---|---| | 1 | Юр. лицо | `is_company: true` | | 2 | Розница | `is_company: false` | > Эти ID могут различаться между установками. Перед созданием контрагента — `GET /api/counterparty_types`.

Роли сотрудников

Известны из JSON-примеров `/api/user`. Полный список — `GET /api/roles`. | ID | `name` (slug) | `description` | |---|---|---| | 1 | `owner` | Собственник | | 3 | `manager` | Руководитель отдела | | 4 | `accountant` | Бухгалтер | > ID 2 не встречался в примерах — вероятно `admin` или схожая роль. Проверьте через `/api/roles`.

Права доступа (permissions)

Известны из JSON-примеров `/api/user`. Используются в массиве `user.permissions[]`. Полный список — `GET /api/permissions`. | ID | `name` | `description` | Screen | |---|---|---|---| | 2 | `edit-admins` | Редактирование администраторов | — | | 4 | `edit-users` | Редактирование пользователей | — | | 5 | `edit-roles` | Редактирование ролей | — | | 6 | `edit-permissions` | Редактирование прав доступа | — | | 7 | `edit-branches` | Редактирование филиалов | — | | 8 | `edit-departments` | Редактирование отделов | — | | 10 | `edit-counterparties` | Редактирование контрагентов | Контрагенты (1) | | 12 | `edit-communications` | Редактирование коммуникаций | — | | 14 | `edit-orders` | Редактирование заказов | Заказы (2) | | 16 | `edit-tasks` | Редактирование задач | Задачи (3) | > Список не полный — гэпы (ID 1, 3, 9, 11, 13, 15) указывают на ещё ~6 прав. ID 1 вероятно `view-…` или базовое право; ID 3, 9, 11, 13, 15 — соседние «view-*» к парным `edit-*`.

Экраны (screens)

Возвращается во вложенном объекте `permission.screen`. Получить полный список — `GET /api/screens`. | ID | Название | |---|---| | 1 | Контрагенты | | 2 | Заказы | | 3 | Задачи | > Связаны с правами через `permission.screen.id` (см. таблицу выше).

Тоны истории (color)

Используется в `histories[].color` / `counterparties.data[].color` (events). 8 значений из стандартного Material-набора: | Значение | Семантика | |---|---| | `primary` | Основное действие | | `secondary` | Вторичное действие | | `info` | Информация | | `success` | Успех | | `warning` | Предупреждение | | `error` | Ошибка | | `dark` | Тёмный нейтральный | | `light` | Светлый нейтральный | См. JSON-пример в [ERP/Контрагенты → история](/ERP/Контрагенты/#counterparty-history) и [ERP/Бизнесы → история](/ERP/Бизнесы/#branch-history). ## Что НЕ нужно угадывать Поля, в которые передаётся ID из любого справочника выше, **обязательно сначала проверять через list-endpoint** — даже если значение видели в JSON-примере доки. Снимки справочников на этой странице сделаны в апреле 2024 и могут устареть. Безопасно: ```http GET /api/order_statuses HTTP/1.1 Host: api.gigma.ru Authorization: Bearer Accept: application/json → { "orderStatuses": [{ "id": 1, "name": "Расчёт", ... }, ...], "orderStatusesCount": 10 } ``` Полученный map сохраняется на стороне клиента и используется в каждом запросе создания заказа. ## Swagger UI _Источник недоступен: /app/src/routes/api-docs/+page.svx_ # E-Commerce --- ## Авторизация Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F/ # Авторизация ### Отправка звонка-сброса с паролем **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/send_password` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `phone` — номер телефона контрагента #### Пример запроса ```json { "phone": "79999999990" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Password successfully send" } ``` ##### Описание полей ответа - `message` — информационное сообщение об успешном выполнении операции ### Авторизация **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/login` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `phone` — номер телефона контрагента - `password` — последние 4 цифры номера телефона, с которого был совершён звонок-сброс (в примере ниже — условный `1111`) #### Пример запроса ```json { "phone": "79999999990", "password": "1111" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "counterparty": { "id": 1, "type": { "id": 2, "name": "Розница", "created_at": "2024-03-23T10:27:06.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": null, "first_name": "Алексей", "last_name": "Петров", "middle_name": "Викторович", "birthday": "1980-04-02", "address": "630073, Новосибирская область, город Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "phone_1": "79999999990", "phone_2": "78888888888", "email": "support@itecho.ru", "created_at": "2024-03-22T14:01:37.000000Z", "updated_at": "2024-03-23T10:48:33.000000Z", "access_token": { "value": "2|k8InFzsVIDB3sumslYax1hWJcZDglKptEgIWzxWo21bdb3d6" } } } ``` ##### Описание полей ответа - `id` — первичный ключ - `type` — объект с информацией о типе контрагента - `id` — идентификатор типа - `name` — название типа - `created_at` — дата создания - `manager` — объект с информацией о менеджере - `id` — идентификатор менеджера - `first_name` — имя менеджера - `last_name` — фамилия менеджера - `middle_name` — отчество менеджера - `name` — полное имя менеджера - `avatar` — аватар пользователя - `first_name` — имя контрагента - `last_name` — фамилия контрагента - `middle_name` — отчество контрагента - `birthday` — дата рождения - `address` — адрес - `phone_1` — основной номер телефона - `phone_2` — дополнительный номер телефона - `email` — электронная почта - `created_at` — дата создания - `updated_at` — дата последнего обновления - `access_token.value` — Bearer token для авторизации в системе ### Авторизация miniapp по подписанному контакту **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/miniapps/{provider}/contact_auth` **Авторизация:** App Token **Headers:** `Token: {application_token}` Используется, когда miniapp уже получил у провайдера подтверждённый контакт клиента и должен получить обычный `counterparty.access_token.value` для E-Commerce API. Канонический маршрут находится в counterparty-контуре. Не используйте публичные alias URL вида `/api/miniapps/.../auth/...`. #### Параметры пути - `provider` — провайдер miniapp. Сейчас поддерживается `max`. #### Параметры запроса - `phone` *(string, обязательно)* — телефон из подписанного contact payload. Можно передать в формате `+79139277802`, в базе он сохранится как `79139277802`. - `auth_date` *(integer, обязательно)* — Unix timestamp подписи. - `hash` *(string, обязательно)* — подпись contact payload, 64 hex-символа. - `init_data` *(string, обязательно)* — подписанные init data miniapp. - `device` *(string, необязательно)* — имя устройства для Sanctum token, например `max-miniapp`. #### Пример запроса ```json { "phone": "+79139277802", "auth_date": 1780000000, "hash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", "init_data": "auth_date=1780000000&user=%7B%22id%22%3A123456%7D&hash=...", "device": "max-miniapp" } ``` #### Ответ При успешном действии возвращается HTTP код `200` с объектом контрагента и `access_token` (аналогично `POST /api/counterparty/login`). ```json { "counterparty": { "id": 1, "phone_1": "79139277802", "access_token": { "value": "2|k8InFzsVIDB3sumslYax1hWJcZDglKptEgIWzxWo21bdb3d6" } } } ``` #### Возможные ошибки - `401 Application token is missing` — не передан заголовок `Token`. - `401 miniapp_contact_auth_invalid` — подпись, `init_data` или срок действия не прошли проверку. - `422 miniapp_contact_auth_not_supported` — provider не поддерживает безопасный signed contact login, например Telegram без proof владения телефоном. - `503 miniapp_contact_auth_not_configured` — на backend не настроен token провайдера. ### Выход контрагента из системы **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/logout` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `from_all_devices` — признак выхода со всех устройств (boolean) #### Пример запроса ```json { "from_all_devices": true } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "User successfully logout from all devices" } ``` ### Инициализация авторизации по callback (звонок) **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/callback_auth/init` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` Запускает звонок на номер телефона контрагента для авторизации по callback. #### Параметры запроса - `phone` *(string, обязательно)* — номер телефона контрагента #### Ответ При успешном действии возвращается HTTP код `200` с информацией о запущенном звонке. ### Проверка статуса callback-авторизации **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/callback_auth/status` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` Проверяет, завершён ли callback-звонок, и возвращает access_token если авторизация прошла успешно. #### Параметры запроса - `phone` *(string, обязательно)* — номер телефона контрагента #### Ответ При успешном действии возвращается HTTP код `200` с объектом контрагента и `access_token` (аналогично `POST /api/counterparty/login`). --- ## Вспомогательные запросы Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B/ # Вспомогательные запросы ### Получение списка популярных тегов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/tags` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/tags ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "tags": [ { "id": 1, "name": "Новинка", "photo": null, "created_at": "2024-04-10T07:03:08.000000Z" }, { "id": 2, "name": "Аксессуар", "photo": null, "created_at": "2024-04-10T07:03:08.000000Z" } ], "tagsCount": 2 } ``` ##### Описание полей ответа - `tags` — массив объектов тегов - `id` — первичный ключ - `name` — название тега - `photo` — URL фотографии тега (или `null`, если отсутствует) - `created_at` — дата/время добавления в систему - `tagsCount` — общее количество тегов ### Получение списка популярных поисковых запросов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/search/popular` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/search/popular ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "popularRequests": [ { "id": 126, "value": "сыворотка", "created_at": "2025-06-23T17:50:42.000000Z" }, { "id": 122, "value": "эффект", "created_at": "2025-06-23T09:01:31.000000Z" } ], "popularRequestsCount": 2 } ``` ##### Описание полей ответа - `popularRequests` — массив объектов популярных поисковых запросов - `id` — первичный ключ - `value` — текст поискового запроса - `created_at` — дата/время добавления в систему - `popularRequestsCount` — общее количество популярных запросов ### Получение истории поисковых запросов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/search/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/search/history ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "searchHistory": [ { "id": 1, "value": "тональный крем", "created_at": "2025-06-23T17:50:42.000000Z" }, { "id": 2, "value": "помада", "created_at": "2025-06-23T09:01:31.000000Z" } ], "searchHistoryCount": 2 } ``` ##### Описание полей ответа - `searchHistory` — массив объектов истории поисковых запросов пользователя - `id` — первичный ключ - `value` — текст поискового запроса - `created_at` — дата/время добавления в систему - `searchHistoryCount` — общее количество записей в истории --- ## Динамический контент Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82/ # Динамический контент ### Получение выбранного блока (по полю code) **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/blocks/{code}` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/blocks/9 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "block": { "id": 42, "code": 9, "name": "Картинка", "avatar": { "id": 3173, "name": "Variant6.png", "type": { "id": 2, "name": "Аватар", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/NkuY5AlCIqKraGSjxvi8ZgjbHOzMPSk8opUZ7CMq.png", "link": null, "created_at": "2025-03-13T08:00:53.000000Z", "updated_at": "2025-03-13T08:00:53.000000Z" }, "block_type": { "id": 3, "name": "Картинка", "avatar": "https://api.gigma.ru/storage/uploads/image-profile-2.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": { "id": 3172, "name": "Variant6.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/hyYYah60RQfaL8oCSfHx0Ad3zknA39Wg8mgBMIVN.png", "link": null, "created_at": "2025-03-13T08:00:52.000000Z", "updated_at": "2025-03-13T08:00:52.000000Z" }, "text": null, "parent": { "id": 39, "name": "Слайдер 2" }, "children": [], "created_at": "2025-03-13T08:00:53.000000Z" } } ``` ##### Описание полей ответа - `id` — ID - `code` — код - `block_type` — объект с информацией о типе блока - `avatar` — URL ссылка на аватар элемента меню - `name` — название блока - `link` — ссылка для перехода - `file` — объект с информацией о загруженном файле - `text` — текстовый контент - `parent` — родительский блок - `children` — массив дочерних элементов ### Получение выбранного блока (по полю identifier) **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/blocks/id/{identifier}` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/blocks/id/header ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "block": { "id": 42, "code": 9, "name": "Картинка", "identifier": "header", "avatar": { "id": 3173, "name": "Variant6.png", "type": { "id": 2, "name": "Аватар", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/NkuY5AlCIqKraGSjxvi8ZgjbHOzMPSk8opUZ7CMq.png", "link": null, "created_at": "2025-03-13T08:00:53.000000Z", "updated_at": "2025-03-13T08:00:53.000000Z" }, "block_type": { "id": 3, "name": "Картинка", "avatar": "https://api.gigma.ru/storage/uploads/image-profile-2.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": { "id": 3172, "name": "Variant6.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/hyYYah60RQfaL8oCSfHx0Ad3zknA39Wg8mgBMIVN.png", "link": null, "created_at": "2025-03-13T08:00:52.000000Z", "updated_at": "2025-03-13T08:00:52.000000Z" }, "text": null, "parent": { "id": 39, "name": "Слайдер 2" }, "children": [], "created_at": "2025-03-13T08:00:53.000000Z" } } ``` ##### Описание полей ответа - `id` — ID - `code` — код - `identifier` — идентификатор - `block_type` — объект с информацией о типе блока - `avatar` — URL ссылка на аватар элемента меню - `name` — название блока - `link` — ссылка для перехода - `file` — объект с информацией о загруженном файле - `text` — текстовый контент - `parent` — родительский блок - `children` — массив дочерних элементов --- ## Заказы Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D1%8B/ # Заказы ### Предварительный расчёт стоимости заказа **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/orders/precalculate` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `products` — массив выбранных товаров - `products.id` — ID выбранного товара - `products.quantity` — кол-во единиц выбранного товара #### Пример запроса ```json { "products": [ { "id": 28504, "quantity": 3 } ] } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "price": 1952.4, "discount": 195.24, "total": 1757.16 } ``` ##### Описание полей ответа - `price` — общая стоимость заказа (в руб.) - `discount` — скидка (выгода) при оформлении заказа (в руб.) - `total` — сумма к оплате (в руб.) ### Получение списка заказов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/orders` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Список передаваемых параметров отсутствует. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/orders ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "orders": [ { "id": 1, "status": { "id": 1, "name": "В сборке", "photo": null, "created_at": "2024-03-27T07:00:46.000000Z" }, "price": "4900.00", "delivery_type": { "id": 1, "name": "Самовывоз", "price": "0.00", "is_active": 1, "created_at": "2024-05-13T05:26:37.000000Z" }, "shop": { "id": 1, "photo": null, "name": "Центральный", "address": "г. Донецк, ул. Ленина, 1", "phone": "+79851234567", "schedule": "ПН-ПТ, с 10:00 до 18:00" }, "products": [ { "id": 1, "old_price": null, "price": "2450.00", "name": "BANILA CO Glow Fit Foundation Brush", "photos": [ { "id": 14, "name": "full_covericious_glow_fit_foundation_spf25_pa__23_peanut.jpg", "path": "https://beta.back.erp.itecho.ru/storage/uploads/full_covericious_glow_fit_foundation_spf25_pa__23_peanut.jpg" } ], "quantity": 2 } ], "created_at": "2024-05-13T05:29:39.000000Z" } ], "ordersCount": 1 } ``` ##### Описание полей ответа - `orders` — массив объектов заказов - `id` — первичный ключ заказа - `status` — объект с информацией о текущем статусе заказа - `price` — сумма к оплате - `delivery_type` — объект с информацией о способе доставки - `shop` — объект с информацией о выбранном магазине (если способ доставки не «Самовывоз», поле равно `null`) - `products` — массив товаров в заказе - `created_at` — дата и время создания заказа - `ordersCount` — общее количество заказов ### Создание заказа **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/orders` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `delivery_type_id` — ID способа доставки - `delivery_subtype_id` — ID подкатегорий доставки. Применяется для `delivery_type_id`, отличных от id = 1 (Самовывоза) - `delivery_subtype_param_id` — ID параметра подкатегории доставки. Применяется для `delivery_subtype_id`, отличных от id = 2 (Курьерская доставка) - `payment_type_id` — ID выбранного способа оплаты - `shop_id` — ID выбранного магазина (пункта выдачи) - `address` — адрес курьерской доставки. Используйте значение `value`. Применяется для `delivery_subtype_id` = 2 (Курьерская доставка) - `products` — массив выбранных товаров - `products.id` — ID выбранного товара - `products.quantity` — кол-во единиц выбранного товара #### Пример запроса ```json { "delivery_type_id": 2, "delivery_subtype_id": 2, "payment_type_id": 2, "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "products": [ { "id": 1, "quantity": 2 } ] } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "order": { "id": 169, "status": { "id": 4, "name": "Можно забирать", "photo": null, "created_at": "2024-03-27T07:00:46.000000Z" }, "price": "760.00", "delivery_type": { "id": 2, "name": "Доставка транспортной компанией СДЭК", "price": "300.00", "is_active": 1 }, "delivery_subtype": { "id": 2, "name": "Курьер", "price": "1000.00", "is_active": 1 }, "delivery_subtype_param": null, "payment_type": { "id": 1, "photo": "https://api.gigma.ru/storage/uploads/pay.svg", "name": "При получении", "description": "Оплата наличными или картой при получении." }, "shop": null, "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "products": [ { "id": 30525, "old_price": null, "price": "760.00", "name": "Мясной салат 210г", "photos": [ { "id": 3253, "name": "XXL_height (1).jpg", "path": "https://api.gigma.ru/storage/uploads/y88lMgVYhP8fhp90va2BEDjsnlXGIVDJcGKzgm3i.jpg", "link": null }, { "id": 3254, "name": "XXL_height (2).jpg", "path": "https://api.gigma.ru/storage/uploads/1hh3OTSweJJOuH5FcN7XOUMa1bB0DLLnOZErqKzE.jpg", "link": null }, { "id": 3255, "name": "XXL_height (3).jpg", "path": "https://api.gigma.ru/storage/uploads/V4zfYLcFZ7QNjI5lFtasZuSO0PkywqtilzhezBMs.jpg", "link": null }, { "id": 3256, "name": "XXL_height (4).jpg", "path": "https://api.gigma.ru/storage/uploads/9u8C3J3vmRMEOHSaCuYNB5MYluagdhrgZFaPmE7P.jpg", "link": null } ], "quantity": 1 } ], "payment_link": null, "created_at": "2025-05-29T09:17:51.000000Z" } } ``` ##### Описание полей ответа - `columns` — объект, содержащий информацию для генерации таблиц - `pagination` — объект с информацией о пагинации - `data.id` — первичный ключ (номер заказа) - `data.created_at` — дата/время заказа - `data.branch` — категория бизнеса - `data.counterparty` — объект с информацией о клиенте (icon — аватар, value — ФИО) - `data.object` — объект - `data.promo` — информация о промоакции (icon — фото, value — название) - `data.source` — источник заказа (icon — фото, value — название) - `data.delivery_type` — метод доставки - `data.delivery_subtype` — подтип доставки - `data.delivery_subtype_param` — параметр подтипа доставки - `data.address` — адрес - `data.payment_type` — тип оплаты - `data.price` — стоимость заказа - `data.status` — этап работ (icon — фото, value — название) ### Получение выбранного заказа **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/orders/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/orders/169 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "order": { "id": 169, "status": { "id": 4, "name": "Можно забирать", "photo": null, "created_at": "2024-03-27T07:00:46.000000Z" }, "price": "760.00", "delivery_type": { "id": 2, "name": "Доставка транспортной компанией СДЭК", "price": "300.00", "is_active": 1 }, "delivery_subtype": { "id": 2, "name": "Курьер", "price": "1000.00", "is_active": 1 }, "delivery_subtype_param": { "id": 1, "name": "г. Донецк, ул.Кручатова 1, пн-пт 10:00-18:00, сб 10:00-16:00, вс выходной" }, "payment_type": { "id": 1, "photo": "https://api.gigma.ru/storage/uploads/pay.svg", "name": "При получении", "description": "Оплата наличными или картой при получении." }, "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "shop": { "id": 19, "photo": null, "name": "Косметика", "address": "283011, Донецкая Народная респ, г Донецк, пр-кт Ленина, д 1", "latitude": "47.9763030", "longitude": "37.7035440", "phone": "78001414141", "schedule": null }, "products": [ { "id": 30525, "old_price": null, "price": "760.00", "name": "Мясной салат 210г", "photos": [ { "id": 3253, "name": "XXL_height (1).jpg", "path": "https://api.gigma.ru/storage/uploads/y88lMgVYhP8fhp90va2BEDjsnlXGIVDJcGKzgm3i.jpg", "link": null } ], "quantity": 1 } ], "payment_link": null, "created_at": "2025-05-29T09:17:51.000000Z" } } ``` ##### Описание полей ответа - `order` — объект с информацией о заказе - `id` — первичный ключ заказа - `status` — объект с информацией о текущем статусе заказа - `id` — ID статуса - `name` — название статуса - `photo` — ссылка на фото статуса - `created_at` — дата создания статуса - `price` — итоговая сумма к оплате - `delivery_type` — объект с информацией о способе доставки - `id` — ID типа доставки - `name` — название типа доставки - `price` — стоимость - `is_active` — флаг активности - `delivery_subtype` — объект с информацией о подтипе доставки (например, «Курьер» или «ПВЗ») - `id` — ID подтипа - `name` — название подтипа - `price` — стоимость - `is_active` — флаг активности - `delivery_subtype_param` — объект с параметрами подтипа доставки (например, адрес ПВЗ) - `id` — ID параметра - `name` — значение параметра - `payment_type` — объект с информацией о способе оплаты - `id` — ID способа оплаты - `photo` — ссылка на иконку - `name` — название способа оплаты - `description` — описание - `address` — адрес доставки - `shop` — объект с информацией о магазине (если применимо) - `id` — ID магазина - `photo` — ссылка на фото магазина - `name` — название - `address` — адрес магазина - `latitude` — широта - `longitude` — долгота - `phone` — телефон - `schedule` — расписание работы - `products` — массив товаров в заказе - `id` — ID товара - `old_price` — старая цена - `price` — текущая цена - `name` — название товара - `photos` — массив объектов с фотографиями товара - `quantity` — количество товара в заказе - `payment_link` — ссылка на онлайн-оплату заказа - `created_at` — дата и время создания заказа - `promo_code` *(string|null)* — применённый промокод - `original_price` *(string|null)* — цена до скидки - `product_discount_amount` *(string|null)* — скидка от цены товара - `promo_discount_amount` *(string|null)* — скидка от промокода - `total_discount_amount` *(string|null)* — итоговая сумма скидки - `final_price` *(string|null)* — итоговая цена к оплате с учётом всех скидок - `name` *(string|null)* — имя покупателя в заказе - `ticket` *(object|null)* — данные электронного билета: `redeem_token`, `redeemed_count`, `total_tickets`, `last_redeemed_at` ## Подписки ### Получение списка подписок **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/subscriptions` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с массивом подписок контрагента. ### Оформление (checkout) подписки **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/subscriptions/{id}/checkout` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с URL для оплаты подписки. ### Создание подписки **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/subscriptions` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `nomenclature_id` *(int, обязательно)* — ID позиции номенклатуры (с `is_subscription = true`) #### Ответ При успешном действии возвращается HTTP код `201` с созданной подпиской. ### Обновление подписки **Метод:** PUT **URL:** `https://api.gigma.ru/api/counterparty/subscriptions/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Отмена подписки **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/subscriptions/{id}/cancel` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Возобновление подписки **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/subscriptions/{id}/resume` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение платежей по подписке **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/subscriptions/{id}/payments` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с историей платежей по подписке. ### Повторная попытка оплаты подписки **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/subscriptions/{id}/retry-payment` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. --- ## Контрагент (клиент) Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%20(%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82)/ # Контрагент (клиент) ### Получение текущего контрагента (клиента) **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "counterparty": { "id": 1, "type": { "id": 2, "name": "Розница", "created_at": "2024-03-23T10:27:06.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": null, "first_name": "Алексей", "last_name": "Петров", "middle_name": "Викторович", "birthday": "1980-04-02", "address": "630073, Новосибирская область, город Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "phone_1": "79999999990", "phone_2": "78888888888", "email": "support@itecho.ru", "created_at": "2024-03-22T14:01:37.000000Z", "updated_at": "2024-03-23T10:48:33.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `type` — объект с информацией о типе контрагента - `id` — идентификатор типа - `name` — название типа - `created_at` — дата создания - `manager` — объект с информацией о менеджере - `id` — идентификатор менеджера - `first_name` — имя менеджера - `last_name` — фамилия менеджера - `middle_name` — отчество менеджера - `name` — полное имя менеджера - `avatar` — объект с информацией об аватаре пользователя - `first_name` — имя контрагента - `last_name` — фамилия контрагента - `middle_name` — отчество контрагента - `birthday` — дата рождения - `address` — адрес - `phone_1` — основной номер телефона - `phone_2` — дополнительный номер телефона - `email` — электронная почта - `created_at` — дата создания - `updated_at` — дата последнего обновления ### Обновление данных текущего контрагента (клиента) **Метод:** PUT **URL:** `https://api.gigma.ru/api/counterparty` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `avatar_id` — ID аватара, загруженного при помощи запроса (может быть пустым, нулевым или NULL) - `first_name` — имя (может быть пустым, нулевым или NULL) - `last_name` — фамилия (может быть пустым, нулевым или NULL) - `email` — email (может быть пустым, нулевым или NULL) - `address` — адрес клиента из Dadata (может быть пустым, нулевым или NULL) **Примечание:** поле `phone` является константным. #### Пример запроса ```json { "avatar_id": 17, "first_name": "Алексей", "last_name": "Петров", "email": "test@mail.ru" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "counterparty": { "id": 14, "type": { "id": 1, "name": "Заказчик", "created_at": "2024-03-27T07:00:46.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": { "id": 17, "name": "Чек.png", "type": { "id": 2, "name": "Аватар", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/dGOPVMjBgjlb3CQjaU7G0HK6Z4q1aATVzfgbGGhM.png", "created_at": "2024-05-14T11:44:21.000000Z", "updated_at": "2024-05-14T11:44:21.000000Z" }, "first_name": "Алексей", "last_name": "Петров", "middle_name": null, "birthday": null, "address": null, "phone_1": "79498102351", "phone_2": null, "email": "test@mail.ru", "created_at": "2024-04-01T08:01:53.000000Z", "updated_at": "2024-05-14T11:44:39.000000Z" } } ``` ### Удаление текущего контрагента (клиента) **Метод:** DELETE **URL:** `https://api.gigma.ru/api/counterparty` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Counterparty successfully deleted" } ``` ##### Описание полей ответа - `message` — информационное сообщение ### Запрос на смену номера телефона **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/phone/request_change` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Инициирует звонок-сброс на новый номер телефона для подтверждения смены. #### Параметры запроса - `phone` *(string, обязательно)* — новый номер телефона #### Ответ При успешном действии возвращается HTTP код `200` с подтверждением отправки звонка. ### Подтверждение смены номера телефона **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/phone/verify_change` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Подтверждает смену номера телефона после получения кода из звонка-сброса. #### Параметры запроса - `phone` *(string, обязательно)* — новый номер телефона - `password` *(string, обязательно)* — последние 4 цифры номера позвонившего (код подтверждения) #### Ответ При успешном действии возвращается HTTP код `200` с обновлёнными данными контрагента. --- ## Навигационная панель Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%9D%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D1%8C/ # Навигационная панель ### Получение элементов навигационной панели **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/menus/{slug?}` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры пути - `{slug?}` *(опционально)* — slug меню. Если не указан, возвращается меню по умолчанию. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/menus/main ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "menuItems": { "code": 1, "avatar": "https://api.gigma.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "name": "Главное меню", "url": "shoes", "children": [ { "code": 2, "avatar": "https://api.gigma.ru/storage/uploads/lARkQYrNNSgcoz5mkE94pGINQmQ1QHzwauuSAyYS.jpg", "name": "Избранное", "url": "/new-item2", "children": [] }, { "code": 3, "avatar": "https://api.gigma.ru/storage/uploads/xJmCtZNCG9mRg6EDKPKMPna31OInSUdMABatJyhx.jpg", "name": "Корзина", "url": "/new-item3", "children": [] }, { "code": 4, "avatar": "https://api.gigma.ru/storage/uploads/LOwjgFbMPCgCrCc1u01cuoACwUX2igpzQzkapoA7.svg", "name": "Уход за волосами", "url": "Hair", "children": [] }, { "code": 5, "avatar": "https://api.gigma.ru/storage/uploads/BU38hv3Gm8GrVTld4IjIGrYPnUf2vSHBoobzRev6.svg", "name": "Уход за кожей вокруг глаз", "url": "Уход за кожей вокруг глаз", "children": [] }, { "code": 6, "avatar": "https://api.gigma.ru/storage/uploads/5sMAhJblgk9UYlADfAEZ2IK0JNPsYTkRclAFnqCt.svg", "name": "Декоративная косметика", "url": "Декоративная косметика", "children": [] } ] } } ``` ##### Описание полей ответа - `code` — ID пункта меню - `avatar` — URL аватара элемента меню (иконка) - `preview` — URL превью-изображения (или `null`) - `name` — название пункта меню - `url` — ссылка для перехода и/или загрузки HTML содержимого страницы - `children` — массив дочерних элементов меню --- ## Справочники Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8/ # Справочники ### Получение списка цен **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/prices` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — опциональный параметр, используемый для поиска товаров по названию - `country_id[]` — массив опциональных параметров для фильтрации товаров по ID страны - `category_id[]` — массив опциональных параметров для фильтрации товаров по ID категории - `brand_id[]` — массив опциональных параметров для фильтрации товаров по ID бренда - `order_by` — сортировка по: `price_asc`, `price_desc`, `popularity_asc`, `popularity_desc` - `available` — наличие: `online` или `offline` - `sale` — `true` для товаров со скидками, `false` для всех товаров - `price_from` — минимальная цена товара (числовое значение) - `price_to` — максимальная цена товара (числовое значение) #### Пример запроса ``` https://api.gigma.ru/api/counterparty/prices ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "min_price": 1, "max_price": 10000 } ``` ##### Описание полей ответа - `min_price` — минимальная цена - `max_price` — максимальная цена ### Получение списка категорий **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/categories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `limit` — опциональный параметр для указания ограничения кол-ва возвращаемых значений - `parent_id` — ID родительской категории (для отображения подчиненных элементов) #### Пример запроса ``` https://api.gigma.ru/api/counterparty/categories?limit=2&parent_id=1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "categories": [ { "id": 2, "name": "Для макияжа", "photo": "https://beta.back.erp.itecho.ru//storage/uploads/default.jpg", "parent": { "id": 1, "name": "Аксессуары", "photo": "https://beta.back.erp.itecho.ru//storage/uploads/default.jpg", "parent": null } }, { "id": 3, "name": "Косметические инструменты", "photo": "https://beta.back.erp.itecho.ru//storage/uploads/default.jpg", "parent": { "id": 1, "name": "Аксессуары", "photo": "https://beta.back.erp.itecho.ru//storage/uploads/default.jpg", "parent": null } } ], "categoriesCount": 2 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название категории - `photo` — ссылка на фото категории - `parent` — объект родительской категории ### Получение списка брендов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/brands` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `limit` — опциональный параметр для указания ограничения кол-ва возвращаемых значений #### Пример запроса ``` https://api.gigma.ru/api/counterparty/brands ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "brands": [ { "id": 1, "name": "Elizavecca", "photo": "https://beta.back.erp.itecho.ru/storage/uploads/default_brand.png", "created_at": "2024-05-02T06:03:54.000000Z" }, { "id": 2, "name": "Tony Moly", "photo": "https://beta.back.erp.itecho.ru/storage/uploads/default_brand.png", "created_at": "2024-05-02T06:03:54.000000Z" } ], "brandsCount": 2 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название бренда - `photo` — ссылка на фото бренда - `created_at` — дата/время добавления в систему ### Получение списка стран **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/countries` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/countries ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "countries": [ { "id": 1, "name": "Россия", "created_at": "2024-04-10T06:59:28.000000Z" }, { "id": 2, "name": "США", "created_at": "2024-04-10T06:59:28.000000Z" } ], "countriesCount": 2 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название страны - `created_at` — дата/время добавления в систему ### Получение списка способов оплаты **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/payment_types` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/payment_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "paymentTypes": [ { "id": 1, "photo": "https://beta.back.erp.itecho.ru/storage/uploads/pay.svg", "name": "При получении", "description": "Оплата наличными или картой при получении." }, { "id": 2, "photo": "https://beta.back.erp.itecho.ru/storage/uploads/cart.svg", "name": "Онлайн", "description": "Оплата через платежный сервис" } ], "paymentTypesCount": 2 } ``` ##### Описание полей ответа - `id` — первичный ключ - `photo` — фото способа оплаты - `name` — название - `description` — описание ### Получение способов доставки **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/delivery_types` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/delivery_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "deliveryTypes": [ { "id": 1, "name": "Самовывоз", "price": "0.00", "is_active": 1 }, { "id": 2, "name": "Доставка транспортной компанией СДЭК", "price": "300.00", "is_active": 1 } ], "deliveryTypesCount": 2 } ``` ##### Описание полей ответа - `deliveryTypes` — массив объектов способов доставки - `id` — первичный ключ - `name` — название способа доставки - `price` — минимальная стоимость доставки - `is_active` — флаг доступности способа для оформления (`1` — доступен, `0` — недоступен) - `deliveryTypesCount` — общее количество способов доставки > **Примечание.** При выборе способа доставки **«Самовывоз»** требуется выполнить дополнительный запрос для получения списка доступных магазинов. ### Получение списка подкатегорий доставки **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/delivery_types/{id}/subtypes` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/delivery_types/2/subtypes ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "deliverySubtypes": [ { "id": 1, "name": "Офис транспортной компании СДЭК", "price": "300.00", "is_active": 1 }, { "id": 2, "name": "Курьер", "price": "1000.00", "is_active": 1 } ], "deliverySubtypesCount": 2 } ``` ##### Описание полей ответа - `deliverySubtypes` — массив объектов подкатегорий способов доставки - `id` — первичный ключ - `name` — название пункта выдачи - `deliverySubtypesCount` — общее количество подкатегорий > **Примечание.** При выборе способа доставки **Курьер** требуется выполнить дополнительный запрос для поиска адреса по Dadata. ### Получение списка параметров подкатегорий доставки **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/delivery_types/{id}/subtypes/{id}/params` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/delivery_types/2/subtypes/1/params ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "deliverySubtypeParams": [ { "id": 1, "name": "г. Донецк, ул.Кручатова 1, пн-пт 10:00-18:00, сб 10:00-16:00, вс выходной" }, { "id": 2, "name": "г. Новосибирск, ул. Советская 64, пн-пт 10:00-18:00, сб 10:00-16:00, вс выходной" } ], "deliverySubtypeParamsCount": 2 } ``` ##### Описание полей ответа - `deliverySubtypeParams` — массив объектов параметров подкатегорий способов доставки - `id` — первичный ключ - `name` — название пункта выдачи - `deliverySubtypeParamsCount` — общее количество параметров подкатегорий ### Получение списка магазинов (пунктов выдачи) **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/shops` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/shops ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "shops": [ { "id": 1, "photo": null, "name": "Центральный", "address": "г. Донецк, ул. Ленина, 1", "phone": "+79851234567", "schedule": "ПН-ПТ, с 10:00 до 18:00" }, { "id": 2, "photo": null, "name": "Новосибирский", "address": "г. Новосибирск, ул. Красный проспект, 65", "phone": "+79851234567", "schedule": "Ежедневно, с 10:00 до 18:00" }, { "id": 3, "photo": null, "name": "Столичный", "address": "г. Москва, ул. Красная Площадь, 1", "phone": "+79851234567", "schedule": "Ежедневно, круглосуточно" } ], "shopsCount": 3 } ``` ##### Описание полей ответа - `shops` — массив объектов магазинов - `id` — первичный ключ - `photo` — URL фотографии магазина (или `null`, если отсутствует) - `name` — название магазина - `address` — адрес пункта выдачи - `phone` — контактный телефон - `schedule` — график работы - `shopsCount` — общее количество магазинов ### Получение списка рекламных слайдов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/slides` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/slides ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "slides": [ { "id": 1, "photo": "http://localhost:8000/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "name": "Улётное лето", "description": "Получите скидку 20% на всё*", "link": "Получите скидку 20% на всё*" } ], "slidesCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `photo` — фото рекламного слайда - `name` — название - `description` — описание - `link` — ссылка для перехода (привязать к картинке) ### Поиск адресов (Dadata) **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/search_address` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковый запрос #### Пример запроса ```json { "query": "Деловая 20, Москва" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "addresses": [ { "name": "г Москва, ул Деловая, д 20", "value": "115477, г Москва, р-н Царицыно, ул Деловая, д 20" }, { "name": "г Москва, ул Деловая, д 11 стр 20", "value": "115477, г Москва, р-н Царицыно, ул Деловая, д 11 стр 20" }, { "name": "г Москва, ул Деловая, д 20 стр 2", "value": "115477, г Москва, р-н Царицыно, ул Деловая, д 20 стр 2" }, { "name": "г Москва, ул Деловая, д 20 стр 3", "value": "115477, г Москва, р-н Царицыно, ул Деловая, д 20 стр 3" }, { "name": "г Москва, ул Деловая, д 20 стр 4", "value": "115477, г Москва, р-н Царицыно, ул Деловая, д 20 стр 4" } ], "addressesCount": 5 } ``` ##### Описание полей ответа - `name` — краткий формат адреса - `value` — полный формат адреса ### Получение списка справочников **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/dictionaries` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `include` — **опциональный** параметр. Строка, содержащая список справочников, разделенных запятыми, которые необходимо загрузить. - **Доступные значения:** `categories`, `brands`, `countries`, `tags`, `popular_requests` - **По умолчанию:** если параметр не указан, будут загружены все справочники. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/dictionaries?include=categories,brands,popular_requests ``` #### Ответ При успешном действии возвращается HTTP-код `200` с JSON-объектом, содержащим запрошенные справочники. ```json { "dictionaries": { "categories": [ { "id": 499, "name": "Массаж", "photo": "https://api.gigma.ru/api//storage/uploads/IUSGEJhjX6X6rCmrvf7KjOYTIQ5EVZGo3OwOGYWZ.jpg", "parent": null }, { "id": 498, "name": "Подарочный набор", "photo": "https://api.gigma.ru/api//storage/uploads/EPpuxvitfnruxQqfmchzSIh19IhlXQNVOIgAnHE9.png", "parent": null } ], "brands": [ { "id": 119, "name": "Dream Woman", "photo": "https://api.gigma.ru/storage/uploads/W9JHUSOzebZHEA7DGInsemlxb2RMMDMZwUF2AslG.webp", "created_at": "2025-03-12T07:48:42.000000Z" }, { "id": 120, "name": "Grace Day", "photo": "https://api.gigma.ru/storage/uploads/qS3JoH94zyx6jjMHTsYnZVfz9JMDmvGzShe8aksR.jpg", "created_at": "2025-03-12T07:57:53.000000Z" } ], "countries": [ { "id": 1, "name": "Россия", "photo": null, "created_at": "2024-04-10T06:59:28.000000Z" } ], "tags": [ { "id": 2, "name": "Аксессуар", "photo": null, "created_at": "2024-04-10T07:03:08.000000Z" } ], "popular_requests": [ { "id": 126, "value": "сыворотка", "created_at": "2025-06-23T17:50:42.000000Z" }, { "id": 122, "value": "эффект", "created_at": "2025-06-23T09:01:31.000000Z" } ] } } ``` ##### Описание полей ответа - `categories` — **(массив объектов)** массив объектов, представляющих категории. - `id` — **(integer)** уникальный идентификатор категории. - `name` — **(string)** название категории. - `photo` — **(string|null)** URL-адрес фотографии категории. `null`, если нет фото. - `parent` — **(object|null)** объект родительской категории. `null` для категорий верхнего уровня. - `brands` — **(массив объектов)** массив объектов, представляющих бренды. - `id` — **(integer)** уникальный идентификатор бренда. - `name` — **(string)** название бренда. - `photo` — **(string|null)** URL-адрес фотографии бренда. `null`, если нет фото. - `created_at` — **(string)** дата и время создания бренда в формате ISO 8601. - `countries` — **(массив объектов)** массив объектов, представляющих страны. - `id` — **(integer)** уникальный идентификатор страны. - `name` — **(string)** название страны. - `photo` — **(string|null)** URL-адрес фотографии страны. `null`, если нет фото. - `created_at` — **(string)** дата и время создания записи о стране в формате ISO 8601. - `tags` — **(массив объектов)** массив объектов, представляющих теги номенклатуры. - `id` — **(integer)** уникальный идентификатор тега. - `name` — **(string)** название тега. - `photo` — **(string|null)** URL-адрес фотографии тега. `null`, если нет фото. - `created_at` — **(string)** дата и время создания тега в формате ISO 8601. - `popular_requests` — **(массив объектов)** массив объектов, представляющих популярные поисковые запросы. - `id` — **(integer)** идентификатор последней записи запроса в группе. - `value` — **(string)** текст поискового запроса. - `created_at` — **(string)** дата и время создания последней записи в формате ISO 8601. --- ## Страницы Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B/ # Страницы ### Получение списка типов страниц **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/page_types` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/page_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "items": [ { "id": 1, "name": "Страница", "photo": null, "created_at": "2024-11-01T19:09:36.000000Z" }, { "id": 2, "name": "Блок", "photo": null, "created_at": "2024-11-01T19:09:36.000000Z" }, { "id": 3, "name": "Новость", "photo": null, "created_at": "2024-11-01T19:09:36.000000Z" } ], "itemsCount": 3 } ``` ##### Описание полей ответа - `items` — массив объектов типов страниц - `id` — идентификатор типа страницы - `name` — название типа страницы - `photo` — фото (или `null`, если отсутствует) - `created_at` — дата/время добавления в систему - `itemsCount` — общее количество типов страниц ### Получение списка страниц **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/pages` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `page_type_id` — обязательный идентификатор типа страницы (берётся из справочника типов страниц) #### Пример запроса ``` https://api.gigma.ru/api/counterparty/pages?page_type_id=3 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "pages": [ { "id": 1, "slug": "new-1", "title": "Новость 1", "description": "Краткое описание новости", "preview": { "id": 14, "name": "preview.jpg", "path": "https://api.gigma.ru/storage/uploads/preview.jpg" }, "content": "

HTML содержимое страницы

", "created_at": "2024-11-01T19:09:36.000000Z" } ], "pagesCount": 1 } ``` ##### Описание полей ответа - `pages` — массив объектов страниц - `id` — идентификатор страницы - `slug` — URL-идентификатор страницы - `title` — заголовок страницы - `description` — краткое описание страницы - `preview` — объект с информацией о превью-изображении - `content` — HTML-разметка страницы - `created_at` — дата/время добавления в систему - `pagesCount` — общее количество страниц ### Получение выбранной страницы **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/pages/{slug}` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/pages/new-1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "page": { "id": 1, "slug": "new-1", "title": "Новость 1", "description": "Краткое описание новости", "preview": { "id": 14, "name": "preview.jpg", "path": "https://api.gigma.ru/storage/uploads/preview.jpg" }, "content": "

HTML содержимое страницы

", "created_at": "2024-11-01T19:09:36.000000Z" } } ``` ##### Описание полей ответа - `page` — объект страницы (структура аналогична элементу из списка страниц) - `id` — идентификатор страницы - `slug` — URL-идентификатор страницы - `title` — заголовок страницы - `description` — краткое описание страницы - `preview` — объект с информацией о превью-изображении - `content` — HTML-разметка страницы - `created_at` — дата/время добавления в систему --- ## Товары Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%D1%8B/ # Товары ### Получение списка товаров **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/products` **Авторизация:** Не требуется **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `page` — текущая страница (для пагинации) - `per_page` — кол-во элементов на странице - `query` — опциональный параметр для поиска товаров по названию - `country_id[]` — массив ID стран для фильтрации - `category_id[]` — массив ID категорий для фильтрации - `brand_id[]` — массив ID брендов для фильтрации - `order_by` — сортировка: `price_asc`, `price_desc`, `popularity_asc`, `popularity_desc` - `available` — наличие: `online` или `offline` - `sale` — `true` для товаров со скидками, `false` для всех - `price_from` — минимальная цена - `price_to` — максимальная цена #### Пример запроса ``` https://api.gigma.ru/api/counterparty/products?page=1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "products": { "current_page": 1, "data": [ { "id": 26896, "views_count": 23, "photo": "https://api.gigma.ru/storage/uploads/7xvG4ZwX4jhjqWwO8Pd11JavGJ2CQ0Z67OUCPWLC.png", "name": "Line Repair Nutrient Bio Satin Serum Сыворотка «Био-Сатин», 30 мл", "brand": { "id": 99, "name": "Бренд 4", "photo": null, "created_at": "2025-01-27T04:19:22.000000Z" }, "old_price": "2450.00", "price": "1960.00", "discount": 20, "quantity": 5, "unit": null, "is_favourite": false, "tags": [] } ], "first_page_url": "http://192.168.0.43:8000/counterparty/products?page=1", "from": 1, "last_page": 1, "last_page_url": "http://192.168.0.43:8000/counterparty/products?page=1", "links": [ { "url": null, "label": "« Предыдущая", "active": false }, { "url": "http://192.168.0.43:8000/counterparty/products?page=1", "label": "1", "active": true }, { "url": null, "label": "Следующая »", "active": false } ], "next_page_url": null, "path": "http://192.168.0.43:8000/counterparty/products", "per_page": 10, "prev_page_url": null, "to": 1, "total": 1 } } ``` ##### Описание полей ответа - `products.data.id` — первичный ключ (ID товара) - `products.data.views_count` — кол-во просмотров - `products.data.photo` — главная фотография товара (одна строка с URL) - `products.data.photos` *(array)* — массив фотографий: `[{id, name, path}]` - `products.data.name` — название товара - `products.data.brand` — объект с информацией о торговой марке - `products.data.old_price` — старая цена - `products.data.price` — текущая цена - `products.data.discount` — скидка (в %) - `products.data.quantity` — доступно (кол-во) - `products.data.is_favourite` — признак «в избранном» - `products.data.tags` — массив тегов, применяемых к товару - `products.data.specification` *(string|null)* — HTML-характеристики товара - `products.data.share_link` *(string|null)* — ссылка для шаринга товара - `products.data.parameters` *(object|null)* — параметры товара: `wholesale` (оптовая цена), `pieces_per_pack` (штук в упаковке), `quantity_pack` (количество упаковок) - `pagination` — объект с информацией о пагинации и её текущем статусе ## Раздел «Избранные» ### Получение списка избранных товаров **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/products/favourites` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/products/favourites ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "products": { "current_page": 1, "data": [ { "id": 1, "photo": "https://beta.back.erp.itecho.ru/storage/uploads/full_covericious_glow_fit_foundation_spf25_pa__23_peanut.jpg", "name": "BANILA CO Glow Fit Foundation Brush", "old_price": "0.00", "price": "2450.00", "discount": 0, "quantity": 5, "unit": "шт.", "is_favourite": true } ], "first_page_url": "https://api.gigma.ru/api/counterparty/products/favourites?page=1", "from": 1, "last_page": 1, "last_page_url": "https://api.gigma.ru/api/counterparty/products/favourites?page=1", "links": [ { "url": null, "label": "« Предыдущая", "active": false }, { "url": "https://api.gigma.ru/api/counterparty/products/favourites?page=1", "label": "1", "active": true }, { "url": null, "label": "Следующая »", "active": false } ], "next_page_url": null, "path": "https://api.gigma.ru/api/counterparty/products/favourites", "per_page": 10, "prev_page_url": null, "to": 1, "total": 1 } } ``` Описание возвращаемых полей аналогично запросу получения списка товаров. ### Добавление товара в избранные **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparty/products/favourites` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `product_id` — ID товара из запроса получения списка товаров #### Пример запроса ```json { "product_id": 1 } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "product": { "id": 1, "photos": [ { "id": 14, "name": "full_covericious_glow_fit_foundation_spf25_pa__23_peanut.jpg", "path": "https://beta.back.erp.itecho.ru/storage/uploads/full_covericious_glow_fit_foundation_spf25_pa__23_peanut.jpg" } ], "name": "BANILA CO Glow Fit Foundation Brush", "description": "BANILA CO Glow Fit Foundation Brush – это инновационная кисть для нанесения тонального средства, которая обеспечивает идеальное покрытие без разводов и пятен. Эта кисть создана для того, чтобы сделать процесс нанесения макияжа быстрым и легким, а результат – просто невероятным.", "old_price": "0.00", "price": "2450.00", "discount": 0, "quantity": 5, "unit": "шт.", "is_favourite": true } } ``` Описание возвращаемых полей аналогично запросу получения списка товаров. ### Удаление товара из избранных **Метод:** DELETE **URL:** `https://api.gigma.ru/api/counterparty/products/favourites/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/counterparty/products/favourites/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Product successfully deleted from favourites" } ``` ##### Описание полей ответа - `message` — информационное сообщение --- ## Уведомления Source: https://artypoul-docs-gigma-7b80.twc1.net/E-Commerce/%D0%A3%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/ # Уведомления ### Получение списка уведомлений **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/notifications` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` ⚠ **Заглушка.** Контроллер возвращает пустой массив (`"notifications": []`). Функциональность уведомлений пока не реализована на бэкенде. #### Параметры запроса - `page` — текущая страница (для пагинации) - `per_page` — кол-во элементов на странице #### Пример запроса ``` https://api.gigma.ru/api/counterparty/notifications?page=1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "notifications": [ { "id": 1, "icon": "https://beta.back.erp.itecho.ru/storage/uploads/order_complete.svg", "title": "Заказ 1", "status": "Выдан", "action_url": "https://google.ru", "created_at": "19.02.24 17:45" } ], "pagination": { "total": 1, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `notifications.id` — первичный ключ (ID уведомления) - `notifications.icon` — URL ссылка на иконку - `notifications.title` — заголовок уведомления - `notifications.status` — тело уведомления (текст) - `notifications.action_url` — URL ссылка для выполнения необходимых действий - `notifications.created_at` — дата и время добавления в систему - `pagination` — объект с информацией о пагинации и её текущем статусе # ERP --- ## Авторизация Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F/ # Авторизация ### Отправка пароля на электронную почту **Метод:** POST **URL:** `https://api.gigma.ru/api/send_password` **Авторизация:** Не требуется **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса - `login` — адрес электронной почты #### Пример запроса ```json { "login": "2141349@mail.ru" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Password successfully send" } ``` ##### Описание полей ответа - `message` — информационное поле ### Авторизация **Метод:** POST **URL:** `https://api.gigma.ru/api/login` **Авторизация:** Не требуется **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса - `login` *(string, обязательно)* — адрес электронной почты - `password` *(string, обязательно)* — пароль из письма, отправленного по `POST /api/send_password` > **Про пароль.** В примерах ниже стоит условный `"1111"`. На реальном сервере пароль строго из письма, которое приходит после `POST /api/send_password`. #### Пример запроса ```json { "login": "2141349@mail.ru", "password": "1111" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "user": { "access_token": { "value": "28|dCWBGIqC9algoNXr6NVVg9D2fKWBaq7BJkRFyxq009cd040b" }, "id": 1, "role": { "id": 1, "name": "owner", "description": "Собственник", "created_at": "2024-03-27T07:00:46.000000Z" }, "branch": null, "department": null, "login": "2141349@mail.ru", "phone": "79139121349", "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "birthday": "1981-05-20", "employment_date": null, "dismissal_date": null, "avatar": null, "employment_contract": null, "is_banned": false, "is_sick": false, "creator": null, "active_time": 0, "last_activity_at": null, "permissions": [ { "id": 2, "screen": null, "name": "edit-admins", "description": "Редактирование администраторов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 4, "screen": null, "name": "edit-users", "description": "Редактирование пользователей", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 5, "screen": null, "name": "edit-roles", "description": "Редактирование ролей", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 6, "screen": null, "name": "edit-permissions", "description": "Редактирование прав доступа", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 7, "screen": null, "name": "edit-branches", "description": "Редактирование филиалов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 8, "screen": null, "name": "edit-departments", "description": "Редактирование отделов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 10, "screen": { "id": 1, "name": "Контрагенты", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-counterparties", "description": "Редактирование контрагентов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 12, "screen": null, "name": "edit-communications", "description": "Редактирование коммуникаций", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 14, "screen": { "id": 2, "name": "Заказы", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-orders", "description": "Редактирование заказов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 16, "screen": { "id": 3, "name": "Задачи", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-tasks", "description": "Редактирование задач", "created_at": "2024-03-27T07:00:46.000000Z" } ], "created_at": "2024-03-27T07:00:46.000000Z", "updated_at": "2024-04-03T07:07:11.000000Z" } } ``` ##### Описание полей ответа - `access_token.value` *(string)* — Bearer-токен. Во всех последующих запросах слать заголовком: ```http Authorization: Bearer ``` При `401 Unauthenticated` нужно повторить `/api/login`. См. [Соглашения → Авторизация](/conventions/#auth). Описание прочих полей приведено в запросе получения текущего пользователя. ### Получение текущего пользователя **Метод:** GET **URL:** `https://api.gigma.ru/api/user` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса Отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/user ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "user": { "id": 1, "role": { "id": 1, "name": "owner", "description": "Собственник", "created_at": "2024-03-27T07:00:46.000000Z" }, "branch": null, "department": null, "login": "2141349@mail.ru", "phone": "79139121349", "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "birthday": "1981-05-20", "employment_date": null, "dismissal_date": null, "avatar": null, "employment_contract": null, "is_banned": false, "is_sick": false, "creator": null, "active_time": 0, "last_activity_at": "2024-04-03T07:07:19.000000Z", "permissions": [ { "id": 2, "screen": null, "name": "edit-admins", "description": "Редактирование администраторов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 4, "screen": null, "name": "edit-users", "description": "Редактирование пользователей", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 5, "screen": null, "name": "edit-roles", "description": "Редактирование ролей", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 6, "screen": null, "name": "edit-permissions", "description": "Редактирование прав доступа", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 7, "screen": null, "name": "edit-branches", "description": "Редактирование филиалов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 8, "screen": null, "name": "edit-departments", "description": "Редактирование отделов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 10, "screen": { "id": 1, "name": "Контрагенты", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-counterparties", "description": "Редактирование контрагентов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 12, "screen": null, "name": "edit-communications", "description": "Редактирование коммуникаций", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 14, "screen": { "id": 2, "name": "Заказы", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-orders", "description": "Редактирование заказов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 16, "screen": { "id": 3, "name": "Задачи", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-tasks", "description": "Редактирование задач", "created_at": "2024-03-27T07:00:46.000000Z" } ], "created_at": "2024-03-27T07:00:46.000000Z", "updated_at": "2024-04-03T07:07:11.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ пользователя - `role` — объект, содержащий роль пользователя в системе - `branch` — объект филиала, если есть - `department` — объект отдела, если есть - `login` — адрес электронной почты пользователя - `phone` — номер телефона пользователя - `first_name` — имя пользователя - `last_name` — фамилия пользователя - `middle_name` — отчество пользователя - `birthday` — дата рождения пользователя - `employment_date` — дата приема на работу - `dismissal_date` — дата увольнения - `avatar` — ссылка на аватар пользователя - `employment_contract` — ссылка на трудовой договор - `is_banned` — статус блокировки пользователя - `is_sick` — статус больничного - `creator` — объект, содержащий информацию о создателе пользователя, если есть - `active_time` — активное время пользователя в системе - `last_activity_at` — дата и время последней активности пользователя - `permissions` — массив объектов, содержащих права доступа пользователя ### Выход пользователя из системы **Метод:** POST **URL:** `https://api.gigma.ru/api/user/logout` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса - `from_all_devices` — признак, указывающий на необходимость выхода сразу со всех устройств #### Пример запроса ```json { "from_all_devices": true } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "User successfully logout from all devices" } ``` ##### Описание полей ответа - `message` — информационное поле --- ## Бизнесы Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%91%D0%B8%D0%B7%D0%BD%D0%B5%D1%81%D1%8B/ # Бизнесы Бизнес (`branch`) — юридическое лицо/филиал, к которому привязаны заказы, сотрудники, склады, реквизиты и интеграции с банками. ## Список и таблица ### Список бизнесов **Метод:** GET **URL:** `https://api.gigma.ru/api/branches` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (query string) - `query` — поисковая строка (необязательно) #### Пример запроса ``` GET https://api.gigma.ru/api/branches ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "branches": [ { "id": 1, "code": "1349", "responsible_user": { "id": 2, "first_name": "Алексей", "last_name": "Жуков", "middle_name": "Игоревич", "name": "Жуков Алексей" }, "avatar": { "id": 40, "name": "organic-cosmetics.png", "path": "https://beta.back.erp.itecho.ru/storage/uploads/organic-cosmetics.png", "created_at": "2024-06-17T16:05:02.000000Z", "updated_at": "2024-06-17T16:05:02.000000Z" }, "title": "Продажа косметики", "inn": "5403057658", "name": "ООО \"АЙТЕКО\"", "kpp": "540301001", "phone_1": "79139121349", "phone_2": "71231231231", "email": "support@itecho.ru", "head": "Снегирёв Алексей Игоревич", "address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "legal_address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "created_at": "2024-03-27T07:26:29.000000Z" } ], "branchesCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `code` — внутренний код бизнеса - `responsible_user` — ответственный пользователь (объект): `id`, `first_name`, `last_name`, `middle_name`, `name` - `avatar` — файл аватара/логотипа или `null` - `title` — короткое название проекта/бизнеса - `name` — полное юридическое наименование - `inn`, `kpp` — реквизиты юрлица - `head` — ФИО директора - `phone_1`, `phone_2`, `email` - `address` — фактический адрес - `legal_address` — юридический адрес - `created_at` — дата создания - `branchesCount` — общее количество бизнесов ### Таблица бизнесов (для UI с колонками и пагинацией) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/branches` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Возвращает данные, готовые к отрисовке таблицы: список колонок, упрощённые бизнесы и пагинацию. #### Параметры запроса (query string) - `query` — поисковая строка - `responsible_user_id[]` — фильтр по ответственному - `page`, `per_page` — пагинация #### Ответ ```json { "columns": [ { "id": 1, "table_id": 4, "order": 1, "key": "title", "has_icon": 1, "text": "Название" }, { "id": 2, "table_id": 4, "order": 2, "key": "responsible_user", "has_icon": 1, "text": "Ответственный" }, { "id": 3, "table_id": 4, "order": 3, "key": "inn", "has_icon": 0, "text": "ИНН" } ], "branches": [ { "id": 1, "code": "1349", "title": "Продажа косметики", "inn": "5403057658" } ], "pagination": { "total": 5, "per_page": 15, "current_page": 1, "last_page": 1, "from": 1, "to": 5 }, "message": "" } ``` ##### Описание полей ответа - `columns[]` — определения колонок (`id`, `table_id`, `order`, `key`, `has_icon`, `text`) - `branches[]` — упрощённые объекты бизнесов для таблицы - `pagination` — стандартный Laravel-пагинатор - `message` — служебное сообщение (обычно пусто) ## Карточка бизнеса ### Получение бизнеса по ID **Метод:** GET **URL:** `https://api.gigma.ru/api/branches/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса Только `id` бизнеса в пути URL. #### Ответ ```json { "branch": { "id": 1, "code": "1349", "responsible_user": { "id": 2, "first_name": "Алексей", "last_name": "Жуков", "middle_name": "Игоревич", "name": "Жуков Алексей" }, "avatar": null, "title": "Разработка и продажа ПО", "inn": "5403057658", "name": "ООО \"АЙТЕКО\"", "kpp": "540301001", "phone_1": "79139121349", "phone_2": null, "email": "support@itecho.ru", "head": "Снегирёв Алексей Игоревич", "address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "legal_address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "created_at": "2024-03-27T07:26:29.000000Z" } } ``` ### Создание бизнеса **Метод:** POST **URL:** `https://api.gigma.ru/api/branches` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) - `title` — короткое название проекта - `name` — полное юридическое наименование - `code` — внутренний код - `inn`, `kpp` — реквизиты юрлица - `head` — ФИО директора - `phone_1`, `phone_2`, `email` - `address` — фактический адрес - `legal_address` — юридический адрес - `responsible_user_id` — ID ответственного пользователя (nullable) - `avatar_id` — ID файла аватара (необязательно) #### Пример запроса ```json { "title": "Продажа косметики", "name": "ООО \"АЙТЕКО\"", "code": "1349", "inn": "5403057658", "kpp": "540301001", "head": "Снегирёв Алексей Игоревич", "phone_1": "79139121349", "phone_2": "71231231231", "email": "support@itecho.ru", "address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "legal_address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "responsible_user_id": 2, "avatar_id": 40 } ``` #### Ответ ```json { "branch": { "id": 42, "...": "поля как в GET" } } ``` ### Изменение бизнеса **Метод:** PUT **URL:** `https://api.gigma.ru/api/branches/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) Те же поля, что и в `POST /api/branches`. #### Ответ ```json { "branch": { "id": 1, "...": "обновлённый объект" } } ``` ### Удаление бизнеса **Метод:** DELETE **URL:** `https://api.gigma.ru/api/branches/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса Только `id` бизнеса в пути URL. #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Branch deleted" } ``` ## Банковские реквизиты бизнеса ### Список реквизитов бизнеса **Метод:** GET **URL:** `https://api.gigma.ru/api/branches/{id}/bank_requisites` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "bankRequisites": [ { "id": 1, "name": "Расчётный счёт в Сбербанке", "bik": "045004641", "kpp": "540301001", "payment_account": "40702810844050003101", "address": "630007, г. Новосибирск, Красный проспект, д. 5" } ], "bankRequisitesCount": 1 } ``` ### Добавление реквизита бизнеса **Метод:** POST **URL:** `https://api.gigma.ru/api/branches/{id}/bank_requisites` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) - `name` — название счёта/банка - `bik` — БИК - `kpp` — КПП - `payment_account` — номер расчётного счёта - `address` — адрес банка #### Пример запроса ```json { "name": "Расчётный счёт в Сбербанке", "bik": "045004641", "kpp": "540301001", "payment_account": "40702810844050003101", "address": "630007, г. Новосибирск, Красный проспект, д. 5" } ``` #### Ответ Структура аналогична GET — массив `bankRequisites` и `bankRequisitesCount`. ### Изменение реквизита бизнеса **Метод:** PUT **URL:** `https://api.gigma.ru/api/branches/{id}/bank_requisites/{requisiteId}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) Те же поля, что и в POST. #### Ответ Структура аналогична GET. ## История ### История изменений бизнеса **Метод:** GET **URL:** `https://api.gigma.ru/api/branches/{id}/history` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "histories": [ { "id": 101, "icon": "edit", "color": "info", "title": "Изменён телефон", "description": "phone_1: 79139121349 → 79991112233", "datetime": "2024-04-03T07:07:11.000000Z" } ], "historiesCount": 1 } ``` ##### Описание полей ответа - `histories[]` — события таймлайна: - `id` — ID события - `icon` — имя иконки (`edit`, `add`, `delete`, …) - `color` — `primary | secondary | info | success | warning | error | dark | light` - `title` — короткий заголовок - `description` — описание изменения - `datetime` — ISO-8601 - `historiesCount` — общее количество событий ## Интеграции банковских реквизитов Каждый банковский реквизит может иметь подключённые интеграции (например, для автоматической синхронизации операций). Интеграция имеет фиксированный набор `parameters` (определения параметров) и `values` (значения, заполняемые пользователем). ### Список интеграций реквизита **Метод:** GET **URL:** `https://api.gigma.ru/api/branches/{branchId}/bank_requisites/{bankId}/integrations` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "integrations": [ { "id": 1, "integration_id": 5, "name": "Сбербанк API", "avatar": "https://beta.back.erp.itecho.ru/storage/integrations/sberbank.svg", "is_active": 1, "parameters": [ { "id": 1, "title": "Логин", "order": 1, "key_1": "login", "key_2": "password", "description_1": "Логин", "description_2": "Пароль" } ], "values": [ { "id": 1, "key_1": "login", "key_2": "password", "description_1": "Логин", "description_2": "Пароль", "value_1": "user123", "value_2": "***" } ] } ], "integrationsCount": 1 } ``` ##### Описание полей ответа - `integrations[]`: - `id` — ID связи (реквизит ↔ интеграция) - `integration_id` — ID типа интеграции в каталоге - `name` — название интеграции - `avatar` — URL логотипа - `is_active` — `1` если активна, иначе `0` - `parameters[]` — определения параметров (метаданные) - `values[]` — заполненные значения параметров ### Изменение интеграции реквизита **Метод:** PUT **URL:** `https://api.gigma.ru/api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationsId}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) - `is_active` — `1` чтобы активировать, `0` чтобы выключить - (опционально) другие поля для обновления #### Ответ ```json { "integration": { "id": 1, "integration_id": 5, "name": "Сбербанк API", "is_active": 1, "parameters": [], "values": [] } } ``` ### Описание интеграции по ID **Метод:** GET **URL:** `https://api.gigma.ru/api/integrations/{integrationId}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Возвращает каталожное описание интеграции (без привязки к реквизиту) — нужно, чтобы узнать какие параметры она ждёт. #### Ответ ```json { "integration": { "id": 5, "name": "Сбербанк API", "avatar": "https://beta.back.erp.itecho.ru/storage/integrations/sberbank.svg", "params": [ { "id": 1, "title": "Логин и пароль", "order": 1, "key_1": "login", "key_2": "password", "description_1": "Логин", "description_2": "Пароль" } ] } } ``` ##### Описание полей ответа - `integration.params[]` — определения параметров: `id`, `title`, `order`, `key_1`/`key_2`, `description_1`/`description_2` (двухколоночный layout: ключ-значение) ### Параметры (значения) интеграции реквизита **Метод:** GET **URL:** `https://api.gigma.ru/api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationId}/parameters` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "parameters": [ { "id": 1, "key_1": "login", "description_1": "Логин", "key_2": "password", "description_2": "Пароль", "value_1": "user123", "value_2": "***" } ], "parametersCount": 1 } ``` ##### Описание полей ответа - `parameters[]` — заполненные значения параметров интеграции: `id`, `key_1`/`description_1`/`value_1`, `key_2`/`description_2`/`value_2` - `parametersCount` — общее количество ### Добавление значения параметра интеграции **Метод:** POST **URL:** `https://api.gigma.ru/api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationsId}/parameters` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) - `integration_parameter_id` — ID определения параметра (из `params[]` интеграции) - `value_1` — значение первого поля - `value_2` — значение второго поля #### Пример запроса ```json { "integration_parameter_id": 1, "value_1": "user123", "value_2": "secret" } ``` #### Ответ ```json { "parameter": { "id": 7, "key_1": "login", "description_1": "Логин", "key_2": "password", "description_2": "Пароль", "value_1": "user123", "value_2": "secret" } } ``` ### Удаление значения параметра интеграции **Метод:** DELETE **URL:** `https://api.gigma.ru/api/branches/{branchId}/bank_requisites/{bankId}/integrations/{integrationId}/parameters/{parameterId}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "message": "Parameter deleted" } ``` ## Вспомогательные ### Список ответственных пользователей (для фильтра) **Метод:** GET **URL:** `https://api.gigma.ru/api/responsible_users` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Используется в фильтре «Ответственный» на таблице бизнесов. #### Ответ ```json { "responsibleUsers": [ { "id": 2, "name": "Жуков Алексей" }, { "id": 3, "name": "Иванов Сергей" } ], "responsibleUsersCount": 2 } ``` ### Поиск пользователя по строке **Метод:** GET **URL:** `https://api.gigma.ru/api/users` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Используется при выборе ответственного пользователя в форме бизнеса (autocomplete). #### Параметры запроса (query string) - `query` — поисковая строка по ФИО #### Пример запроса ``` GET https://api.gigma.ru/api/users?query=Иванов ``` #### Ответ ```json { "users": [ { "id": 3, "first_name": "Сергей", "last_name": "Иванов", "middle_name": "Петрович", "name": "Иванов Сергей", "login": "ivanov@itecho.ru" } ], "usersCount": 1 } ``` --- ## Блоки Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%91%D0%BB%D0%BE%D0%BA%D0%B8/ # Блоки ### Получение списка блоков (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/applications/{id}/blocks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `applications/{id}` — ID приложения из списка приложений - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/tables/applications/30/blocks ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ { "id": 149, "table_id": 19, "order": 0, "key": "code", "has_icon": 0, "text": "Код" }, { "id": 150, "table_id": 19, "order": 1, "key": "date", "has_icon": 0, "text": "Дата" }, { "id": 151, "table_id": 19, "order": 2, "key": "name", "has_icon": 1, "text": "Название" }, { "id": 152, "table_id": 19, "order": 3, "key": "path", "has_icon": 0, "text": "Путь" }, { "id": 153, "table_id": 19, "order": 4, "key": "block_type", "has_icon": 1, "text": "Тип блока" }, { "id": 154, "table_id": 19, "order": 5, "key": "creator", "has_icon": 1, "text": "Создал" } ], "blocks": [ { "id": { "icon": null, "value": 7, "url": "" }, "date": "25 янв 2025", "name": { "icon": "https://api.gigma.ru/storage/uploads/default.svg", "value": "Видео на главной странице" }, "path": "> Главная > Видео на главной странице", "block_type": { "icon": "https://api.gigma.ru/api//storage/uploads/image-profile-2.svg", "value": "Картинка" }, "creator": { "icon": "https://api.gigma.ru/api//storage/uploads/cdO1uLpgY29TgnFLhaJWQkjK8VDxMg2fk3dp0ihW.png", "value": "Воронова София", "link": "https://beta.gigma.ru/users/list-users/66" } } ], "pagination": { "total": 1, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `columns` — массив столбцов - `pagination` — объект с информацией, необходимой для пагинации - `id` — первичный ключ (номер заказа) - `name` — название блока - `block_type` — объект с информацией о типе блока ### Получение списка блоков **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/blocks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `applications/{id}` — ID приложения из списка приложений - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/applications/30/blocks ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json [ { "id": 8, "code": 1, "name": "Первый блок (текстовый)", "avatar": null, "block_type": { "id": 1, "name": "Обычный текст", "avatar": "https://api.gigma.ru/api//storage/uploads/image-profile-1.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": null, "text": "Текст", "parent": null, "children": [ { "id": 9, "code": 2, "name": "Второй блок", "avatar": null, "block_type": { "id": 5, "name": "URL ссылка", "avatar": "https://api.gigma.ru/api//storage/uploads/image-profile-4.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": "https://yandex.ru", "file": null, "text": null, "parent": { "id": 8, "name": "Первый блок (текстовый)" }, "children": [ { "id": 10, "code": 3, "name": "Третий блок", "avatar": null, "block_type": { "id": 3, "name": "Картинка", "avatar": "https://api.gigma.ru/api//storage/uploads/image-profile-2.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": { "id": 2827, "name": "Da Chirillo - Колбасы и деликатесы премиум качества.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/IcnkXX2tyYQcFtuNOYEsbrgRX13T1IVkeyTTHxqH.png", "link": null, "created_at": "2025-01-27T14:17:14.000000Z", "updated_at": "2025-01-27T14:17:14.000000Z" }, "text": null, "parent": { "id": 9, "name": "Второй блок" }, "children": [], "created_at": "2025-01-27T14:17:14.000000Z" } ], "created_at": "2025-01-27T14:12:38.000000Z" }, { "id": 11, "code": 4, "name": "Четвертый блок", "avatar": null, "block_type": { "id": 2, "name": "Длинный текст", "avatar": "https://api.gigma.ru/api//storage/uploads/image-profile-1.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": null, "text": "

Привет!

", "parent": { "id": 8, "name": "Первый блок (текстовый)" }, "children": [], "created_at": "2025-01-27T14:23:07.000000Z" } ], "created_at": "2025-01-27T13:03:19.000000Z" } ] ``` ##### Описание полей ответа Возвращаемые поля аналогичны запросу получения выбранного блока. ### Получение выбранного блока **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/blocks/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `applications/{id}` — ID приложения из списка приложений #### Пример запроса ``` https://api.gigma.ru/api/applications/30/blocks/9 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "block": { "id": 10, "code": 3, "name": "Третий блок", "avatar": { "id": 2827, "name": "Da Chirillo - Колбасы и деликатесы премиум качества.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/IcnkXX2tyYQcFtuNOYEsbrgRX13T1IVkeyTTHxqH.png", "link": null, "created_at": "2025-01-27T14:17:14.000000Z", "updated_at": "2025-01-27T14:17:14.000000Z" }, "block_type": { "id": 3, "name": "Картинка", "avatar": "https://api.gigma.ru/api//storage/uploads/image-profile-2.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": { "id": 2827, "name": "Da Chirillo - Колбасы и деликатесы премиум качества.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/IcnkXX2tyYQcFtuNOYEsbrgRX13T1IVkeyTTHxqH.png", "link": null, "created_at": "2025-01-27T14:17:14.000000Z", "updated_at": "2025-01-27T14:17:14.000000Z" }, "text": null, "parent": { "id": 9, "name": "Второй блок" }, "children": [], "created_at": "2025-01-27T14:17:14.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ (номер блока) - `code` — код блока - `name` — название блока - `avatar` — объект с информацией об аватаре - `block_type` — объект с информацией о типе блока - `link` — URL ссылка - `file` — объект с информацией о прикреплённом файле - `text` — текстовый контент блока - `children` — массив объектов типа "Блок", которые являются подчиненными сущностями выбранного элемента - `created_at` — дата добавления в систему ### Добавление блока **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/blocks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `applications/{id}` — ID приложения из списка приложений - `block_type_id` — ID типа блока из справочника - `name` — имя блока - `link` — URL ссылка. Обязателен, если `block_type_id` = 4 или `block_type_id` = 5 - `avatar_id` — ID аватара, загруженного при помощи запроса добавления файла - `file_id` — ID прикрепляемого файла, загруженного при помощи запроса добавления файла. Обязателен, если `block_type_id` = 3 - `text` — текстовый контент блока. Обязателен, если `block_type_id` = 1 или `block_type_id` = 2 - `parent_id` — ID родительского блока из запроса получения списка блоков #### Пример запроса ```json { "block_type_id": 3, "name": "Параметр 1", "link": null, "avatar_id": 1, "file_id": 1, "text": null, "parent_id": 1 } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "block": { "id": 5, "code": 5, "name": "Параметр 1", "avatar": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "link": null, "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "block_type": { "id": 3, "name": "Картинка", "avatar": "https://api.gigma.ru/api//storage/uploads/image-profile-2.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "link": null, "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "text": null, "parent": { "id": 1, "name": "Видео рекламного слайдера" }, "children": [], "created_at": "2025-01-23T17:59:03.000000Z" } } ``` ##### Описание полей ответа Возвращаемые поля аналогичны запросу получения выбранного блока. ### Редактирование блока **Метод:** PUT **URL:** `https://api.gigma.ru/api/applications/{id}/blocks/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `applications/{id}` — ID приложения из списка приложений - `block_type_id` — ID типа блока из справочника - `name` — имя блока - `code` — код блока - `link` — URL ссылка. Обязателен, если `block_type_id` = 4 или `block_type_id` = 5 - `avatar_id` — ID аватара, загруженного при помощи запроса добавления файла. Обязателен, если `block_type_id` = 3 - `file_id` — ID прикрепляемого файла, загруженного при помощи запроса добавления файла. Обязателен, если `block_type_id` = 3 - `text` — текстовый контент блока. Обязателен, если `block_type_id` = 1 или `block_type_id` = 2 - `parent_id` — ID родительского блока из запроса получения списка блоков #### Пример запроса ```json { "block_type_id": 3, "name": "Видео рекламного слайдера", "avatar_id": 2, "file_id": 2, "parent_id": 1, "code": 10 } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "block": { "id": 2, "code": 10, "name": "Видео рекламного слайдера", "avatar": { "id": 2, "name": "logo.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/igbcW8dPebcrVfnbC2A2Zptf1nruFcF8Nmf8sVTG.png", "link": null, "created_at": "2024-04-14T20:11:00.000000Z", "updated_at": "2024-04-14T20:11:00.000000Z" }, "block_type": { "id": 3, "name": "Картинка", "avatar": "https://api.gigma.ru/api//storage/uploads/image-profile-2.svg", "created_at": "2025-01-23T09:47:38.000000Z" }, "link": null, "file": { "id": 2, "name": "logo.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/igbcW8dPebcrVfnbC2A2Zptf1nruFcF8Nmf8sVTG.png", "link": null, "created_at": "2024-04-14T20:11:00.000000Z", "updated_at": "2024-04-14T20:11:00.000000Z" }, "text": null, "parent": { "id": 1, "name": "Видео рекламного слайдера" }, "children": [], "created_at": "2025-01-23T17:44:00.000000Z" } } ``` ##### Описание полей ответа Возвращаемые поля аналогичны запросу получения выбранного блока. ### Удаление блока **Метод:** DELETE **URL:** `https://api.gigma.ru/api/applications/{id}/blocks/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `applications/{id}` — ID приложения из списка приложений #### Пример запроса ``` https://api.gigma.ru/api/applications/30/blocks/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Block successfully deleted" } ``` ##### Описание полей ответа - `message` — информационное поле ### Получение истории изменений по блоку **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/blocks/{id}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `applications/{id}` — ID приложения из списка приложений #### Пример запроса ``` https://api.gigma.ru/api/applications/30/blocks/18/history ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "histories": [ { "id": 2174, "icon": "check", "color": "primary", "title": "Создание", "description": "Создание: Воронова София", "datetime": "23.01.2025 15:57" } ], "historiesCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `icon` — иконка - `color` — цвет - `title` — заголовок - `description` — описание - `datetime` — дата выполнения действия --- ## Вспомогательные запросы Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B/ # Вспомогательные запросы Утилитарные endpoint'ы, не привязанные к конкретному ресурсу: расчёт стоимости и набор autocomplete-поисков по справочникам (адрес, банк, город, компания). ## Калькулятор ### Расчёт стоимости товара **Метод:** POST **URL:** `https://api.gigma.ru/api/orders/calculator` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Считает итоговую цену с учётом наценки и скидки. Не сохраняет ничего в базе. #### Параметры запроса (тело) - `price` — себестоимость товара (обязательно) - `markup` — наценка в процентах (обязательно, `0` если без наценки) - `discount` — скидка в процентах (обязательно, `0` если без скидки) #### Пример запроса ```json { "price": 1000, "markup": 40, "discount": 1 } ``` #### Ответ ```json { "price": 1414 } ``` ##### Описание полей ответа - `price` — итоговая стоимость с учётом наценки и скидки ## Поиск адреса ### Поиск адреса **Метод:** POST **URL:** `https://api.gigma.ru/api/search_address` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Подсказки адресов для autocomplete (как DaData). Возвращает список вариантов, сопоставимых с введённой строкой. #### Параметры запроса (тело) - `query` — поисковая строка #### Пример запроса ```json { "query": "Новогодняя 20" } ``` #### Ответ ```json { "addresses": [ { "name": "г. Новосибирск, ул. Новогодняя, д. 20", "value": "630073, г. Новосибирск, Новогодняя ул., д. 20" }, { "name": "г. Новосибирск, ул. Новогодняя, д. 20/1", "value": "630073, г. Новосибирск, Новогодняя ул., д. 20/1" } ], "addressesCount": 2 } ``` ##### Описание полей ответа - `addresses[]` — варианты: `name` (короткое представление), `value` (полный адрес) - `addressesCount` — количество результатов ## Поиск банка ### Поиск банка **Метод:** POST **URL:** `https://api.gigma.ru/api/search_bank` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Подсказки банковских реквизитов по БИК или названию. Возвращает шаблонные `IBankRequisite` для авто-заполнения формы. #### Параметры запроса (тело) - `query` — поисковая строка (БИК или название банка) #### Пример запроса ```json { "query": "Сбер" } ``` #### Ответ ```json { "banks": [ { "name": "ПАО Сбербанк", "bik": "044525225", "kpp": "773601001", "payment_account": "", "address": "117997, г. Москва, ул. Вавилова, д. 19" } ], "banksCount": 1 } ``` ##### Описание полей ответа - `banks[]` — варианты по форме `IBankRequisite`: `name`, `bik`, `kpp`, `address`, и т.п. - `banksCount` — количество результатов ## Поиск компании ### Поиск компании **Метод:** POST **URL:** `https://api.gigma.ru/api/search_company` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Подсказки юрлиц по названию, ИНН или ОГРН. Используется в формах создания компании-контрагента и компании-бизнеса. #### Параметры запроса (тело) - `field` — по какому полю искать: `"name"` | `"inn"` | `"ogrn"` - `query` — поисковая строка #### Пример запроса ```json { "field": "inn", "query": "5403057658" } ``` #### Ответ ```json { "companies": [ { "name": "ООО \"АЙТЕКО\"", "inn": "5403057658", "orgn": "1185476049158", "legal_address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "kpp": "540301001", "head": "Снегирёв Алексей Игоревич", "registration_date": "2020-04-02" } ], "companiesCount": 1 } ``` ##### Описание полей ответа - `companies[]` — варианты компаний: `name`, `inn`, `orgn` (опц.), `legal_address`, `kpp`, `head`, `registration_date` (опц.) - `companiesCount` — количество результатов ## Города ### Список городов **Метод:** GET **URL:** `https://api.gigma.ru/api/cities` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "cities": [ { "id": 1, "name": "Новосибирск", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 2, "name": "Москва", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" } ], "citiesCount": 2 } ``` ##### Описание полей ответа - `cities[]` — массив: `id`, `name`, `avatar`, `created_at` - `citiesCount` — общее количество ### Город по ID **Метод:** GET **URL:** `https://api.gigma.ru/api/cities/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "city": { "id": 1, "name": "Новосибирск", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" } } ``` ## Поиск номенклатуры ### Поиск номенклатуры **Метод:** POST **URL:** `https://api.gigma.ru/api/search_nomenclature` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Полнотекстовый поиск по номенклатуре через DaData. Возвращает список совпадений по названию. #### Параметры запроса (тело) - `query` — поисковая строка #### Пример запроса ```json { "query": "крем" } ``` #### Ответ При успешном действии возвращается HTTP код `200` с массивом совпадений. --- ## Задачи Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8/ # Задачи > ⚠ **DELETE не поддерживается.** `Route::resource('tasks', ...)->except(['destroy'])` — маршрут удаления не зарегистрирован. Запрос `DELETE /api/tasks/{id}` вернёт `405 Method Not Allowed`. ### Получение списка задач (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/tasks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка (min: 3 символа) - `date_from` — фильтр по дате (от) - `date_to` — фильтр по дате (до) - `creator_id[]` — массив ID создателей задачи - `executor_id[]` — массив ID исполнителей задачи - `order_id[]` — массив ID заказов - `task_status_id[]` — массив ID статусов (`GET /api/task_statuses`): 1=В работе, 2=Просрочена, 3=Выполнена - `page` — текущая страница - `per_page` — кол-во элементов на странице #### Пример запроса ``` https://api.gigma.ru/api/tables/tasks?task_status_id[]=1&executor_id[]=5 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ {"id": 1, "table_id": 3, "order": 0, "key": "id", "has_icon": 0, "text": "№"}, {"id": 2, "table_id": 3, "order": 1, "key": "name", "has_icon": 0, "text": "Название"}, {"id": 3, "table_id": 3, "order": 2, "key": "executor", "has_icon": 1, "text": "Исполнитель"}, {"id": 4, "table_id": 3, "order": 3, "key": "status", "has_icon": 0, "text": "Статус"}, {"id": 5, "table_id": 3, "order": 4, "key": "started_at", "has_icon": 0, "text": "Начало"}, {"id": 6, "table_id": 3, "order": 5, "key": "finished_at", "has_icon": 0, "text": "Срок"} ], "tasks": [ { "id": 12, "name": "Позвонить клиенту", "executor": { "icon": "https://api.gigma.ru/storage/uploads/default.svg", "value": "Иванов Алексей" }, "status": { "icon": "https://api.gigma.ru/storage/uploads/default.svg", "value": "В работе" }, "started_at": "16.05.2026 09:00", "finished_at": "16.05.2026 18:00" } ], "pagination": { "total": 1, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `columns` — массив столбцов таблицы - `tasks` — массив задач - `pagination` — объект пагинации ### Получение списка задач (JSON) **Метод:** GET **URL:** `https://api.gigma.ru/api/tasks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Те же фильтры, что и в табличном представлении. #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "tasks": [ { "id": 12, "name": "Позвонить клиенту", "started_at": "2026-05-16T09:00:00.000000Z", "finished_at": "2026-05-16T18:00:00.000000Z", "create_everyday": false, "duration": "9 ч", "executor": { "id": 5, "name": "Иванов Алексей" }, "creator": { "id": 1, "name": "Полищук Артём" }, "status": { "id": 1, "name": "В работе" }, "order": { "id": 42, "name": "Заказ №42" }, "object": null, "notifications": [], "stage": null, "progress": null } ], "tasksCount": 1 } ``` ### Получение выбранной задачи **Метод:** GET **URL:** `https://api.gigma.ru/api/tasks/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/tasks/12 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "task": { "id": 12, "name": "Позвонить клиенту", "started_at": "2026-05-16T09:00:00.000000Z", "finished_at": "2026-05-16T18:00:00.000000Z", "created_at": "2026-05-16T08:00:00.000000Z", "create_everyday": false, "duration": "9 ч", "executor": { "id": 5, "name": "Иванов Алексей" }, "creator": { "id": 1, "name": "Полищук Артём" }, "status": { "id": 1, "name": "В работе" }, "order": { "id": 42, "name": "Заказ №42" }, "object": null, "notifications": [], "stage": null, "progress": null } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название задачи - `started_at` — дата/время начала - `finished_at` — дата/время срока выполнения - `created_at` — дата/время создания записи - `create_everyday` — повторять каждый день (boolean) - `duration` — строка длительности (`"9 ч"`) - `executor` — объект исполнителя - `creator` — объект создателя задачи - `status` — объект статуса (`GET /api/task_statuses`) - `order` — объект связанного заказа - `object` — произвольная строка-метка объекта - `notifications` — массив отделов, получающих уведомление (`GET /api/departments`) - `stage` / `progress` — этап и прогресс (опционально) ### Создание задачи **Метод:** POST **URL:** `https://api.gigma.ru/api/tasks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` *(string, обязательно)* — название задачи - `started_at` *(datetime, обязательно)* — дата/время начала, ISO 8601 - `finished_at` *(datetime, обязательно)* — дата/время срока, ISO 8601, должна быть позже `started_at` - `executor_id` *(int, обязательно)* — ID исполнителя (`GET /api/users`) - `order_id` *(int, обязательно)* — ID заказа (`GET /api/orders`) - `object` *(string, опционально)* — произвольная метка объекта - `create_everyday` *(boolean, опционально)* — повторять задачу ежедневно - `notifications` *(int[], опционально)* — массив ID отделов для уведомлений (`GET /api/departments`) #### Пример запроса ```json { "name": "Позвонить клиенту", "started_at": "2026-05-17 09:00:00", "finished_at": "2026-05-17 18:00:00", "executor_id": 5, "order_id": 42, "create_everyday": false, "notifications": [1, 2] } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "task": { "id": 13, "name": "Позвонить клиенту", "started_at": "2026-05-17T09:00:00.000000Z", "finished_at": "2026-05-17T18:00:00.000000Z", "created_at": "2026-05-17T08:30:00.000000Z", "create_everyday": false, "duration": "9 ч", "executor": { "id": 5, "name": "Иванов Алексей" }, "creator": { "id": 1, "name": "Полищук Артём" }, "status": { "id": 1, "name": "В работе" }, "order": { "id": 42, "name": "Заказ №42" }, "object": null, "notifications": [ { "id": 1, "name": "Технический" }, { "id": 2, "name": "Коммерческий" } ], "stage": null, "progress": null } } ``` ### Редактирование задачи **Метод:** PUT **URL:** `https://api.gigma.ru/api/tasks/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Все поля опциональны. Можно обновить любое из них. - `task_status_id` *(int)* — ID нового статуса: 1=В работе, 2=Просрочена, 3=Выполнена - `name` *(string)* — название задачи - `started_at` *(datetime)* — дата/время начала, ISO 8601 - `finished_at` *(datetime)* — дата/время срока, ISO 8601, после `started_at` - `executor_id` *(int)* — ID исполнителя - `order_id` *(int)* — ID заказа - `object` *(string)* — метка объекта - `create_everyday` *(boolean)* — ежедневное повторение - `notifications` *(int[])* — массив ID отделов #### Пример запроса (смена статуса) ```json { "task_status_id": 3 } ``` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращаемый объект `task` аналогичен ответу `GET /api/tasks/{id}`. --- ## Заказы Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D1%8B/ # Заказы ### Получение списка заказов (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/orders` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `order_status_id` — массив ID статусов заказа из справочника - `application_id` — массив ID источников заказа - `department_id` — массив ID отделов - `hierarchy` — `all` для получения всех заказов, `my` — только своих - `page` — текущая страница (для пагинации) - `per_page` — кол-во элементов на странице - `query` — поисковая строка - `date_from` — "дата с..." (от даты добавления в систему) - `date_to` — "дата по..." (от даты добавления в систему) #### Пример запроса ``` https://api.gigma.ru/api/tables/orders?query=коледино&order_status_id[]=1&application_id[]=1?hierarchy=my&department_id[]=1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ {"id": 26, "table_id": 4, "order": 0, "key": "id", "has_icon": 0, "text": "№"}, {"id": 27, "table_id": 4, "order": 1, "key": "created_at", "has_icon": 0, "text": "Создан"}, {"id": 28, "table_id": 4, "order": 2, "key": "branch", "has_icon": 1, "text": "Бизнес"}, {"id": 29, "table_id": 4, "order": 3, "key": "counterparty", "has_icon": 1, "text": "Клиент"}, {"id": 30, "table_id": 4, "order": 4, "key": "object", "has_icon": 1, "text": "Проект/Объект"}, {"id": 31, "table_id": 4, "order": 5, "key": "source", "has_icon": 1, "text": "Источник"}, {"id": 32, "table_id": 4, "order": 6, "key": "manager", "has_icon": 1, "text": "Менеджер"}, {"id": 33, "table_id": 4, "order": 7, "key": "sales_channel", "has_icon": 1, "text": "Канал продаж"}, {"id": 87, "table_id": 4, "order": 8, "key": "promo", "has_icon": 1, "text": "Промоакция"}, {"id": 106, "table_id": 4, "order": 9, "key": "price", "has_icon": 0, "text": "Сумма"}, {"id": 107, "table_id": 4, "order": 10, "key": "status", "has_icon": 0, "text": "Статус/Этап"} ], "orders": [ { "id": 16, "created_at": "27.07.2024 12:43", "branch": { "icon": "http://localhost:8000//storage/uploads/9qzh2GCaYpRpaxXnql0JZYpIesu3qlvQLV2OBhcN.png", "value": "Продажа косметики" }, "counterparty": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": " " }, "object": null, "source": { "icon": "http://localhost:8000//storage/uploads/uPINajA2l2XPB44ojjTEd88wRKxRwsWXIlrgg2iX.jpg", "value": "Сей момент" }, "manager": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Полищук Артём" }, "sales_channel": { "icon": "http://localhost:8000//storage/uploads/uPINajA2l2XPB44ojjTEd88wRKxRwsWXIlrgg2iX.jpg", "value": "Сей момент" }, "promotion": null, "price": null, "status": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "В сборке" } } ], "pagination": { "total": 1, "per_page": 1, "current_page": 1, "last_page": 1, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `columns` — массив столбцов - `pagination` — объект с информацией, необходимой для пагинации - `id` — первичный ключ (номер заказа) - `created_at` — дата/время создания заказа - `branch` — объект с информацией о бизнесе - `counterparty` — объект с информацией о клиенте (контрагенте) - `object` — объект с информацией об объекте - `source` — объект с информацией об источнике заказа - `manager` — объект с информацией о менеджере - `sales_channel` — объект с информацией о канале продаж - `promotion` — объект с информацией о промоакции - `price` — стоимость заказа - `status` — объект с информацией о статусе заказа ### Получение выбранного заказа **Метод:** GET **URL:** `https://api.gigma.ru/api/orders/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/orders/17 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "order": { "id": 17, "avatar": { "id": 763, "name": "ai monsters.jpg", "type": { "id": 2, "name": "Аватар", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "http://localhost:8000/storage/uploads/AsQsvs5VPbIo6YkYlnlQel39T7RS01zYD2NPlYYv.jpg", "created_at": "2024-08-01T15:55:09.000000Z", "updated_at": "2024-08-01T15:55:09.000000Z" }, "status": { "id": 1, "name": "В сборке", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "invoice_number": null, "invoice_start_date": null, "invoice_end_date": null, "application": { "id": 14, "name": "Сей момент", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-08-01T09:20:01.000000Z" }, "counterparty": { "id": 56, "name": "ООО \"РОГА И КОПЫТА\"" }, "delivery_type": { "id": 1, "name": "Самовывоз", "price": "0.00", "is_active": 1, "created_at": "2024-05-13T05:26:37.000000Z" }, "address": "357100, Ставропольский край, г Невинномысск", "branch": { "id": 15, "name": "Торговля косметикой", "avatar": "http://localhost:8000//storage/uploads/b9t9B4Y4Fq6dAKvgVW2vhzFJ12ZrgRgvVHdMnfjt.png", "created_at": "2024-08-01T07:50:59.000000Z" }, "object": null, "source": { "id": 14, "name": "Сей момент", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-08-01T09:20:01.000000Z" }, "sales_channel": { "id": 1, "name": "Канал продаж 1", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "promotion": { "id": 1, "name": "Улётное лето", "avatar": "http://localhost:8000//storage/uploads/default_brand.png", "created_at": "2024-07-28T16:59:24.000000Z" }, "contract": null, "contract_number": null, "contract_start_date": null, "contract_end_date": null, "name": null, "promo_code": null, "original_price": null, "product_discount_amount": null, "promo_discount_amount": null, "total_discount_amount": null, "final_price": null, "refund_request": { "requested_at": null, "requested_by_user_id": null, "comment": null, "email_sent_at": null }, "ticket": { "redeem_token": null, "redeemed_count": null, "total_tickets": null, "last_redeemed_at": null, "last_redeemed_by": null } } } ``` ##### Описание полей ответа - `id` — первичный ключ (номер заказа) - `avatar` — объект с информацией о фотографии заказа - `status` — объект с информацией о статусе заказа - `price` — итоговая цена заказа - `promo_code` — применённый промокод - `original_price` — исходная цена до скидок - `product_discount_amount` — скидка по товарам - `promo_discount_amount` — скидка по промокоду - `total_discount_amount` — суммарная скидка - `final_price` — итоговая цена после всех скидок - `invoice_number` — номер счёта - `application` — объект с информацией о приложении - `invoice_start_date` — дата счёта (дата создания счёта) - `invoice_end_date` — дата окончания срока действия счёта - `counterparty` — объект с информацией о контрагенте - `delivery_type` — объект с информацией о способе доставки заказа - `address` — адрес - `branch` — объект с информацией о бизнесе - `object` — информация об объекте - `source` — объект с информацией об источнике заказа - `sales_channel` — объект с информацией о канале продаж - `manager` — объект с информацией о менеджере - `promotion` — объект с информацией о промоакции - `contract` — объект с информацией о договоре - `contract_number` — номер договора - `contract_start_date` — дата начала договора - `contract_end_date` — дата окончания договора - `name` — произвольное название заказа - `refund_request` — объект с информацией о запросе возврата: `requested_at`, `requested_by_user_id`, `comment`, `email_sent_at` - `ticket` — поля гашения билета (только для авторизованных с доступом к заказу): `redeem_token`, `redeemed_count`, `total_tickets`, `last_redeemed_at`, `last_redeemed_by` ### Добавление заказа **Метод:** POST **URL:** `https://api.gigma.ru/api/orders` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса ⚠ Реальный minimum (`Order/StoreRequest` в `itecho-erp-backend`): только `counterparty_id` + `manager_id`. Остальные поля опциональны на уровне валидатора. - `counterparty_id` *(int, обязательно)* — ID контрагента (`GET /api/counterparties`) - `manager_id` *(int, обязательно)* — ID менеджера (`GET /api/managers`) - `avatar_id` *(int, опционально)* — ID фотографии (`GET /api/files`) - `delivery_type_id` *(int, опционально)* — ID типа доставки (`GET /api/delivery_types`) - `address` *(string, опционально)* — адрес заказа (min:3) - `shop_id` *(int, опционально)* — ID магазина (`GET /api/shops`). Рекомендуется с `branch_id` - `branch_id` *(int, опционально)* — ID бизнеса (`GET /api/branches`) - `object_id` *(int, опционально)* — ID объекта - `application_id` *(int, опционально)* — ID источника (E-Commerce application) - `sales_channel_id` *(int, опционально)* — ID канала продаж - `promotion_id` *(int, опционально)* — ID промоакции - `contract_number` *(string, опционально)* — номер договора - `contract_id` *(int, опционально)* — ID файла договора (`GET /api/files`) - `contract_start_date` *(date, опционально)* — `YYYY-MM-DD` - `contract_end_date` *(date, опционально)* — `YYYY-MM-DD` - `invoice_number` *(string, опционально)* — номер счёта - `invoice_start_date` *(date, опционально)* — `YYYY-MM-DD` - `invoice_end_date` *(date, опционально)* — `YYYY-MM-DD` #### Пример запроса ```json { "avatar_id": 1, "counterparty_id": 3, "delivery_type_id": 1, "address": "г Москва, пл Комсомольская, д 20", "branch_id": 1, "shop_id": 1, "object_id": null, "application_id": 10, "sales_channel_id": 1, "manager_id": 1, "promotion_id": null, "contract_number": "А-35/2024", "contract_id": 1, "contract_start_date": "2024-01-11", "contract_end_date": "2024-01-11", "invoice_number": "123123", "invoice_start_date": "2024-01-11", "invoice_end_date": "2024-01-11" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "order": { "id": 17, "avatar": { "id": 763, "name": "ai monsters.jpg", "type": { "id": 2, "name": "Аватар", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "http://localhost:8000/storage/uploads/AsQsvs5VPbIo6YkYlnlQel39T7RS01zYD2NPlYYv.jpg", "created_at": "2024-08-01T15:55:09.000000Z", "updated_at": "2024-08-01T15:55:09.000000Z" }, "status": { "id": 1, "name": "В сборке", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "invoice_number": null, "invoice_start_date": null, "invoice_end_date": null, "application": { "id": 14, "name": "Сей момент", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-08-01T09:20:01.000000Z" }, "counterparty": { "id": 56, "name": "ООО \"РОГА И КОПЫТА\"" }, "delivery_type": { "id": 1, "name": "Самовывоз", "price": "0.00", "is_active": 1, "created_at": "2024-05-13T05:26:37.000000Z" }, "address": "357100, Ставропольский край, г Невинномысск", "shop": { "id": 1, "photo": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "http://localhost:8000/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "name": "Центральный", "address": "г. Ростов-на-Дону, ул. Ленина, 1", "phone": "+79851234567", "schedule": "ПН-ПТ, с 10:00 до 18:00" }, "branch": { "id": 15, "name": "Торговля косметикой", "avatar": "http://localhost:8000//storage/uploads/b9t9B4Y4Fq6dAKvgVW2vhzFJ12ZrgRgvVHdMnfjt.png", "created_at": "2024-08-01T07:50:59.000000Z" }, "object": null, "source": { "id": 14, "name": "Сей момент", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-08-01T09:20:01.000000Z" }, "sales_channel": { "id": 1, "name": "Канал продаж 1", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "promotion": { "id": 1, "name": "Улётное лето", "avatar": "http://localhost:8000//storage/uploads/default_brand.png", "created_at": "2024-07-28T16:59:24.000000Z" }, "contract": null, "contract_number": null, "contract_start_date": null, "contract_end_date": null } } ``` ##### Описание полей ответа Возвращаемые поля аналогичны запросу получения выбранного заказа. ### Редактирование заказа **Метод:** PUT **URL:** `https://api.gigma.ru/api/orders/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `avatar_id` — ID фотографии склада - `counterparty_id` — ID контрагента - `delivery_type_id` — ID типа доставки - `address` — адрес заказа - `shop_id` — ID магазина. Рекомендуется использовать с параметром `branch_id` - `branch_id` — ID бизнеса - `object_id` — ID объекта - `application_id` — ID источника - `sales_channel_id` — ID канала продаж - `manager_id` — ID менеджера - `promotion_id` — ID промоакции - `contract_number` — номер договора - `contract_id` — ID договора - `contract_start_date` — дата начала действия договора - `contract_end_date` — дата окончания действия договора - `invoice_number` — номер счёта - `invoice_start_date` — дата счёта (дата создания счёта) - `invoice_end_date` — дата окончания срока действия счёта #### Пример запроса ```json { "avatar_id": 1, "counterparty_id": 3, "delivery_type_id": 1, "address": "г Москва, пл Комсомольская, д 20", "branch_id": 1, "object_id": null, "application_id": 10, "sales_channel_id": 1, "manager_id": 1, "promotion_id": null, "contract_number": "А-35/2024", "contract_id": 1, "contract_start_date": "2024-01-11", "contract_end_date": "2024-01-11", "invoice_number": "123123", "invoice_start_date": "2024-01-11", "invoice_end_date": "2024-01-11" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращаемый объект `order` аналогичен ответу запроса получения выбранного заказа. ##### Описание полей ответа Возвращаемые поля аналогичны запросу получения выбранного заказа. ### Удаление заказа ⚠ backend bug **Метод:** DELETE **URL:** `https://api.gigma.ru/api/orders/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` ⚠ **Backend bug:** endpoint стабильно возвращает `500`. Удаление заказа через API сейчас не работает — используй смену статуса в `IS_CANCELED` (6) через `PUT /api/orders/{id}` с `{ "order_status_id": 6 }`. #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/orders/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Order deleted." } ``` ##### Описание полей ответа - `message` — информационное поле ## Содержание заказа ### Получение содержимого заказа (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/orders/{id}/nomenclatures` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/tables/orders/16/nomenclatures?query=картридж ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ {"id": 108, "table_id": 14, "order": 0, "key": "code", "has_icon": 0, "text": "Код"}, {"id": 109, "table_id": 14, "order": 1, "key": "name", "has_icon": 1, "text": "Наименование"}, {"id": 110, "table_id": 14, "order": 2, "key": "warehouse", "has_icon": 1, "text": "Склад"}, {"id": 111, "table_id": 14, "order": 3, "key": "city", "has_icon": 0, "text": "Город"}, {"id": 112, "table_id": 14, "order": 4, "key": "brand", "has_icon": 1, "text": "Торговая марка"}, {"id": 113, "table_id": 14, "order": 5, "key": "vat", "has_icon": 0, "text": "Ставка НДС"}, {"id": 114, "table_id": 14, "order": 6, "key": "unit", "has_icon": 0, "text": "Ед. изм."}, {"id": 115, "table_id": 14, "order": 7, "key": "price", "has_icon": 0, "text": "Цена"}, {"id": 116, "table_id": 14, "order": 8, "key": "quantity", "has_icon": 0, "text": "Кол-во"}, {"id": 117, "table_id": 14, "order": 9, "key": "amount", "has_icon": 0, "text": "Сумма"} ], "orderNomenclatures": [ { "id": 19, "code": "1234", "name": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Tony Moly Soft Touch Air Puff 5P" }, "warehouse": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Петухова" }, "city": "Новосибирск", "brand": { "icon": "http://localhost:8000//storage/uploads/default_brand.png", "value": "Tony Moly" }, "vat": "20.00", "unit": "ед", "quantity": 5, "price": "900.00", "amount": "4500.00" }, { "id": 20, "code": "123", "name": { "icon": "http://localhost:8000//storage/uploads/lp9ypkHwfjK2bULPWbllznxFlGt71e3hUMnPFn2F.webp", "value": "BANILA CO Glow Fit Foundation Brush" }, "warehouse": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Петухова" }, "city": "Новосибирск", "brand": { "icon": "http://localhost:8000//storage/uploads/default_brand.png", "value": "Holika Holika" }, "vat": "20.00", "unit": "ед", "quantity": 1, "price": "204500.00", "amount": "204500.00" } ], "pagination": { "total": 2, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 2 } } ``` ##### Описание полей ответа - `columns` — массив столбцов - `pagination` — объект с информацией, необходимой для пагинации - `id` — первичный ключ - `name` — объект с номенклатурным наименованием товара - `warehouse` — объект с наименованием склада - `city` — город - `brand` — объект с информацией о производителе - `vat` — НДС - `unit` — единицы измерения товара - `quantity` — кол-во товара - `price` — стоимость за 1 единицу - `amount` — общая стоимость ### Добавление товаров в заказ (= создание Reservation) ⚠ backend bug **Метод:** POST **URL:** `https://api.gigma.ru/api/orders/{id}/nomenclatures` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` ⚠ **Backend bug:** endpoint часто возвращает `500` на корректных входных данных. Bypass: дождаться фикса бэка либо использовать E-Commerce flow (`POST /api/counterparty/orders`), который создаёт резервации внутри транзакции. **NB:** под капотом этот endpoint создаёт запись `Reservation` (см. erp-rules §18.7). `{id}` в `PUT`/`DELETE …/nomenclatures/{id}` — это id записи `Reservation`, не `nomenclature_id`. #### Параметры запроса ⚠ Реальный minimum (`OrderNomenclature/StoreRequest`): только `quantity` (min:1). Остальные — опциональны. - `quantity` *(int, обязательно)* — кол-во, ≥ 1 - `nomenclature_id` *(int, опционально)* — ID номенклатуры из `GET /api/nomenclatures`. Без него резерв создаётся без привязки к конкретному товару. - `storage_unit_id` *(int, опционально)* — ID единицы измерения (`GET /api/storage_units`) - `price` *(string, опционально)* — цена decimal-string (`"1000.00"`) - `vat_id` *(int, опционально)* — ID ставки НДС (`GET /api/vats`) #### Пример запроса ```json { "nomenclature_id": 1, "quantity": 1, "storage_unit_id": 1, "price": 100, "vat_id": 1 } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "id": 23, "orderNomenclature": { "warehouseNomenclature": { "id": 1, "avatar": "http://localhost:8000//storage/uploads/kcdDZKHha8HbujO4z80uYmOsayHHxTXZrM2q6GEN.webp", "name": "BANILA CO Glow Fit Foundation Brush / Склад Петухова / 5 ед / 204500.00 руб" }, "quantity": 1, "unit": { "id": 1, "name": "Литр", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-06-24T09:57:10.000000Z" }, "price": "1.00", "vat": { "id": 1, "name": "Без НДС", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-08-12T08:51:40.000000Z" }, "amount": "1.00" } } ``` ##### Описание полей ответа - `id` — ID (первичный ключ) товарной позиции в заказе - `warehouseNomenclature` — объект с информацией о товаре, хранимом на складе - `quantity` — кол-во товара - `unit` — объект с информацией о единицах измерения - `price` — цена товара - `vat` — НДС - `amount` — общая стоимость товарной позиции ### Обновление товаров в заказе **Метод:** PUT **URL:** `https://api.gigma.ru/api/orders/{id}/nomenclatures/{nomenclatureId}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `nomenclature_id` — ID номенклатуры (`GET /api/nomenclatures`) - `quantity` — кол-во товара - `storage_unit_id` — ID единицы измерения - `price` — стоимость товара - `vat_id` — ID НДС #### Пример запроса ```json { "nomenclature_id": 1, "quantity": 1, "storage_unit_id": 1, "price": 100, "vat_id": 1 } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "id": 23, "orderNomenclature": { "warehouseNomenclature": { "id": 1, "avatar": "http://localhost:8000//storage/uploads/kcdDZKHha8HbujO4z80uYmOsayHHxTXZrM2q6GEN.webp", "name": "BANILA CO Glow Fit Foundation Brush / Склад Петухова / 5 ед / 204500.00 руб" }, "quantity": 1, "unit": { "id": 1, "name": "Литр", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-06-24T09:57:10.000000Z" }, "price": "1.00", "vat": { "id": 1, "name": "Без НДС", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-08-12T08:51:40.000000Z" }, "amount": "1.00" } } ``` ##### Описание полей ответа - `id` — ID (первичный ключ) товарной позиции в заказе - `warehouseNomenclature` — объект с информацией о товаре, хранимом на складе - `quantity` — кол-во товара - `unit` — объект с информацией о единицах измерения - `price` — цена товара - `vat` — НДС - `amount` — общая стоимость товарной позиции ### Удаление товаров из заказа **Метод:** DELETE **URL:** `https://api.gigma.ru/api/orders/{id}/nomenclatures/{nomenclatureId}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/orders/16/nomenclatures/28 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Order nomenclature deleted" } ``` ##### Описание полей ответа - `message` — информационное поле ## Файлы ### Получение списка файлов (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/orders/{id}/files` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/tables/orders/18/files ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ {"id": 34, "table_id": 5, "order": 0, "key": "id", "has_icon": 0, "text": "№"}, {"id": 35, "table_id": 5, "order": 1, "key": "created_at", "has_icon": 0, "text": "Дата"}, {"id": 36, "table_id": 5, "order": 2, "key": "creator", "has_icon": 1, "text": "Создатель"}, {"id": 37, "table_id": 5, "order": 3, "key": "name", "has_icon": 0, "text": "Название"}, {"id": 38, "table_id": 5, "order": 3, "key": "path", "has_icon": 0, "text": "Ссылка"} ], "files": [ { "id": 4, "creator": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Полищук Артём" }, "name": "Rating container.svg", "path": "http://localhost:8000/storage/uploads/u7TY0sLEoWiFgeglUHHbWgchUIS41yhAPZ0uMuYX.svg", "created_at": "18.04.2024 13:50" } ], "pagination": { "total": 1, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — имя файла - `creator` — создатель файла - `path` — ссылка на загрузку файла - `created_at` — дата/время загрузки файла ### Добавление файла **Метод:** POST **URL:** `https://api.gigma.ru/api/orders/{id}/files` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `file` — загружаемый документ #### Пример запроса ```json { "file": "FILE('path')" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "file": { "id": 593, "name": "Инфо Агбис (2).txt", "type": { "id": 3, "name": "Документ к заказу", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "http://localhost:8000/storage/uploads/QWu9ghBy6kfsXsEQZBuIqhpEoY8ghrCIFZhBdpwj.txt", "created_at": "2024-07-31T07:06:37.000000Z", "updated_at": "2024-07-31T07:06:37.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — имя файла - `type` — объект с информацией о типе загружаемого файла - `path` — ссылка на загрузку файла - `created_at` — дата/время загрузки файла - `updated_at` — дата/время последнего обновления файла ### Удаление файла Удаление файла из заказа полностью аналогично стандартному удалению файла. См. соответствующий запрос на странице "Файлы". ## История изменений ### Получение истории изменений по заказу **Метод:** GET **URL:** `https://api.gigma.ru/api/orders/{id}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/orders/18/history ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "orders": { "current_page": 1, "data": [ { "id": 1, "icon": "done", "color": "success", "title": "Создан заказ №18", "description": "Создал(-а) Артём Полищук", "dateTime": "31.07.2024" }, { "id": 2, "icon": "done", "color": "success", "title": "Отредактирован заказ №18", "description": "Отредактировал(-а) Артём Полищук", "dateTime": "31.07.2024" } ], "first_page_url": "http://192.168.0.43:8000/api/orders/18/history?page=1", "from": 1, "last_page": 1, "last_page_url": "http://192.168.0.43:8000/api/orders/18/history?page=1", "links": [ { "url": null, "label": "« Предыдущая", "active": false }, { "url": "http://192.168.0.43:8000/api/orders/18/history?page=1", "label": "1", "active": true }, { "url": null, "label": "Следующая »", "active": false } ], "next_page_url": null, "path": "http://192.168.0.43:8000/api/orders/18/history", "per_page": 10, "prev_page_url": null, "to": 2, "total": 2 } } ``` ##### Описание полей ответа - `id` — первичный ключ - `icon` — иконка - `color` — цвет - `title` — заголовок - `description` — описание ## Запрос возврата ### Запрос возврата по заказу **Метод:** POST **URL:** `https://api.gigma.ru/api/orders/{id}/request-refund` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Создаёт запрос на возврат по заказу. Фиксирует время запроса, инициатора и комментарий. #### Параметры запроса - `comment` *(string, опционально)* — причина возврата #### Пример запроса ```json { "comment": "Товар не подошёл по размеру" } ``` #### Ответ При успешном действии возвращается HTTP код `200` с обновлённым объектом заказа (те же поля, что и в `GET /api/orders/{id}`). --- ## Контрагенты Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%8B/ # Контрагенты Контрагент в ERP — это физическое лицо или компания, привязанная к менеджеру и типу. Поле `is_company` (boolean) разделяет две модели: - **Физлицо** (`is_company: false`) — `first_name`, `last_name`, `middle_name`, `birthday`, `address`. - **Компания** (`is_company: true`) — `name`, `inn`, `kpp`, `head`, `registered_at`, `legal_address`. Общие поля для обоих: `avatar`, `type`, `manager`, `phone_1`, `phone_2`, `email`, `created_at`, `updated_at`. ## Список и таблица ### Список контрагентов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparties` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (query string) - `query` — поисковая строка - `is_company` — фильтр компании/физлица (boolean) - `counterparty_type_id[]` — массив ID типов контрагентов - `manager_id[]` — массив ID менеджеров - `date_from`, `date_to` — диапазон по дате добавления - `credit` — задолженность равна (int) - `credit_gt` — задолженность больше - `credit_lt` — задолженность меньше #### Пример запроса ``` GET https://api.gigma.ru/api/counterparties?counterparty_type_id[]=2&query=иванов ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "counterparties": [ { "id": 1, "is_company": true, "type": { "id": 2, "name": "Юр. лицо", "avatar": null, "created_at": "2024-03-22T14:01:37.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": null, "name": "ООО \"АЙТЕКО\"", "inn": "5403057658", "kpp": "540301001", "head": "Снегирёв Алексей Игоревич", "registered_at": "2020-04-02", "phone_1": "79999999999", "phone_2": "78888888888", "email": "support@itecho.ru", "legal_address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "created_at": "2024-03-22T14:01:37.000000Z", "updated_at": "2024-04-03T07:07:11.000000Z" } ] } ``` ##### Описание полей ответа - `id` — первичный ключ - `is_company` — `true` для компании, `false` для физлица - `type` — объект типа контрагента (`id`, `name`, `avatar`, `created_at`) или `null` - `manager` — объект менеджера (`id`, `first_name`, `last_name`, `middle_name`, `name`) или `null` - `avatar` — объект файла аватара (`id`, `url`, …) или `null` - Поля компании: `name`, `inn`, `kpp`, `head`, `registered_at`, `legal_address` - Поля физлица: `first_name`, `last_name`, `middle_name`, `birthday`, `address` - Общие: `phone_1`, `phone_2`, `email`, `created_at`, `updated_at` ### Таблица контрагентов (для UI с колонками и пагинацией) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/counterparties` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Возвращает данные в формате, пригодном для отрисовки таблицы: список колонок, упрощённое представление контрагентов и пагинацию. Поддерживает те же query-фильтры, что и `/api/counterparties`. #### Параметры запроса (query string) Те же, что у `/api/counterparties`, плюс пагинация: `page`, `per_page`. #### Ответ ```json { "columns": [ { "id": 1, "table_id": 3, "order": 1, "key": "name", "has_icon": 1, "text": "Название" }, { "id": 2, "table_id": 3, "order": 2, "key": "type", "has_icon": 1, "text": "Тип" }, { "id": 3, "table_id": 3, "order": 3, "key": "manager", "has_icon": 1, "text": "Менеджер" }, { "id": 4, "table_id": 3, "order": 4, "key": "inn", "has_icon": 0, "text": "ИНН" }, { "id": 5, "table_id": 3, "order": 5, "key": "credit", "has_icon": 0, "text": "Задолженность" } ], "counterparties": [ { "id": 1, "created_at": "2024-03-22T14:01:37.000000Z", "type": { "icon": "/icons/company.svg", "value": "Юр. лицо" }, "name": { "icon": null, "value": "ООО \"АЙТЕКО\"" }, "manager": { "icon": null, "value": "Полищук Артём" }, "inn": "5403057658", "contact": null, "credit": 0 } ], "pagination": { "total": 42, "per_page": 15, "current_page": 1, "last_page": 3, "from": 1, "to": 15 } } ``` ##### Описание полей ответа - `columns[]` — определения колонок: - `id`, `table_id`, `order` — служебные - `key` — ключ поля контрагента - `has_icon` — `1` если рядом со значением показывается иконка - `text` — заголовок колонки - `counterparties[]` — упрощённые контрагенты, где `type`, `name`, `manager` и т.п. имеют форму `{ icon, value }` - `pagination` — стандартный Laravel-пагинатор: `total`, `per_page`, `current_page`, `last_page`, `from`, `to` ## Карточка контрагента ### Получение контрагента по ID **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparties/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса Только `id` контрагента в пути URL. #### Ответ ```json { "counterparty": { "id": 1, "is_company": false, "type": { "id": 2, "name": "Розница", "avatar": null, "created_at": "2024-03-22T14:01:37.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": null, "first_name": "Алексей", "last_name": "Петров", "middle_name": "Викторович", "birthday": "1980-04-02", "address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26", "phone_1": "79999999990", "phone_2": "78888888888", "email": "support@itecho.ru", "created_at": "2024-03-22T14:01:37.000000Z", "updated_at": "2024-04-03T07:07:11.000000Z" } } ``` ### Создание контрагента **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparties` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) Формат тела зависит от `is_company`. **Физлицо** (`is_company: false`): - `is_company` — `false` - `counterparty_type_id` — ID типа контрагента (nullable) - `avatar_id` — ID файла аватара (optional) - `first_name`, `last_name`, `middle_name` — ФИО - `birthday` — `YYYY-MM-DD` - `phone_1`, `phone_2`, `email`, `address` **Компания** (`is_company: true`): - `is_company` — `true` - `counterparty_type_id` — ID типа - `avatar_id` — ID файла (optional) - `name` — название - `inn`, `kpp` - `head` — ФИО директора - `registered_at` — дата регистрации `YYYY-MM-DD` - `phone_1`, `phone_2`, `email`, `legal_address` #### Пример запроса (физлицо) ```json { "is_company": false, "counterparty_type_id": 2, "first_name": "Алексей", "last_name": "Петров", "middle_name": "Викторович", "birthday": "1980-04-02", "phone_1": "79999999990", "phone_2": "78888888888", "email": "support@itecho.ru", "address": "630073, г. Новосибирск, Новогодняя ул., д. 20/1, кв. 26" } ``` #### Ответ ```json { "counterparty": { "id": 42, "is_company": false, "...": "поля как в GET" } } ``` ### Изменение контрагента **Метод:** PUT **URL:** `https://api.gigma.ru/api/counterparties/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) Те же поля, что и в `POST /api/counterparties` (соответствующий вариант `is_company`). #### Ответ ```json { "counterparty": { "id": 42, "...": "обновлённый объект" } } ``` ### Удаление контрагента **Метод:** DELETE **URL:** `https://api.gigma.ru/api/counterparties/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса Только `id` контрагента в пути URL. #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Counterparty deleted" } ``` ## Банковские реквизиты ### Список банковских реквизитов контрагента **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparties/{id}/bank_requisites` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "bankRequisites": [ { "id": 1, "name": "Расчётный счёт в Сбербанке", "bik": "045004641", "kpp": "540301001", "payment_account": "40702810844050003101", "address": "630007, Новосибирская область, г. Новосибирск, Красный проспект, д. 5", "created_at": "2024-03-22T14:01:37.000000Z", "updated_at": "2024-04-03T07:07:11.000000Z" } ], "bankRequisitesCount": 1 } ``` ##### Описание полей ответа - `bankRequisites[]` — массив реквизитов: - `id`, `name` — название счёта/банка - `bik` — БИК - `kpp` — КПП - `payment_account` — номер расчётного счёта - `address` — адрес банка - `bankRequisitesCount` — общее количество ### Добавление банковского реквизита **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparties/{id}/bank_requisites` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) - `name` — название счёта/банка - `bik` — БИК - `kpp` — КПП - `payment_account` — номер расчётного счёта - `address` — адрес банка #### Пример запроса ```json { "name": "Расчётный счёт в Сбербанке", "bik": "045004641", "kpp": "540301001", "payment_account": "40702810844050003101", "address": "630007, г. Новосибирск, Красный проспект, д. 5" } ``` #### Ответ ```json { "bankRequisites": [ { "id": 1, "name": "Расчётный счёт в Сбербанке", "bik": "045004641", "kpp": "540301001", "payment_account": "40702810844050003101", "address": "630007, г. Новосибирск, Красный проспект, д. 5" } ], "bankRequisitesCount": 1 } ``` ### Изменение банковского реквизита **Метод:** PUT **URL:** `https://api.gigma.ru/api/counterparties/{id}/bank_requisites/{requisiteId}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) Те же поля, что и в POST: `name`, `bik`, `kpp`, `payment_account`, `address`. #### Ответ Структура аналогична GET — массив `bankRequisites` и `bankRequisitesCount`. ## Контакты контрагента ### Список контактов контрагента **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparties/{id}/contacts` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "contacts": [ { "id": 1, "first_name": "Анна", "last_name": "Иванова", "middle_name": "Сергеевна", "birthday": "1985-07-15", "phone_1": "79991234567", "phone_2": "", "email": "anna@itecho.ru", "address": "г. Новосибирск, ул. Ленина, 1" } ], "contactsCount": 1 } ``` ##### Описание полей ответа - `contacts[]` — массив контактных лиц: `id`, `first_name`, `last_name`, `middle_name`, `birthday`, `phone_1`, `phone_2`, `email`, `address` - `contactsCount` — общее количество ### Добавление контакта **Метод:** POST **URL:** `https://api.gigma.ru/api/counterparties/{id}/contacts` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) - `first_name`, `last_name`, `middle_name` — ФИО - `birthday` — `YYYY-MM-DD` - `phone_1`, `phone_2`, `email`, `address` #### Пример запроса ```json { "first_name": "Анна", "last_name": "Иванова", "middle_name": "Сергеевна", "birthday": "1985-07-15", "phone_1": "79991234567", "phone_2": "", "email": "anna@itecho.ru", "address": "г. Новосибирск, ул. Ленина, 1" } ``` #### Ответ Структура аналогична GET — массив `contacts` и `contactsCount`. ### Изменение контакта **Метод:** PUT **URL:** `https://api.gigma.ru/api/counterparties/{id}/contacts/{contactId}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (тело) Те же поля, что и в POST. #### Ответ Структура аналогична GET. ## История изменений ### История изменений контрагента **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparties/{id}/history` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Возвращает события по контрагенту в формате таймлайна с пагинацией. #### Параметры запроса (query string) - `page`, `per_page` — пагинация #### Ответ ```json { "counterparties": { "current_page": 1, "data": [ { "id": 101, "icon": "edit", "color": "info", "title": "Изменён телефон", "description": "phone_1: 79999999990 → 79991112233", "dateTime": "2024-04-03T07:07:11.000000Z" } ], "first_page_url": "https://api.gigma.ru/api/counterparties/1/history?page=1", "from": 1, "last_page": 2, "last_page_url": "https://api.gigma.ru/api/counterparties/1/history?page=2", "next_page_url": "https://api.gigma.ru/api/counterparties/1/history?page=2", "path": "https://api.gigma.ru/api/counterparties/1/history", "per_page": 15, "prev_page_url": null, "to": 15, "total": 20, "links": [ { "url": null, "label": "« Previous", "active": false }, { "url": "https://api.gigma.ru/api/counterparties/1/history?page=1", "label": "1", "active": true }, { "url": "https://api.gigma.ru/api/counterparties/1/history?page=2", "label": "2", "active": false } ] } } ``` ##### Описание полей ответа - `counterparties.data[]` — события: - `id` — ID события - `icon` — имя иконки (`edit`, `add`, `delete`, …) - `color` — `primary | secondary | info | success | warning | error | dark | light` - `title` — короткий заголовок события - `description` — описание изменения - `dateTime` — ISO-8601 - Остальные поля — стандартный Laravel-пагинатор --- ## Магазины Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9C%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D1%8B/ # Магазины ### Получение списка магазинов (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/shops` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка - `city_id` — ID города из справочника - `branch_id` — ID бизнеса из справочника - `is_shop` — флаг, указывающий на то, является ли значение магазином (true) или пунктом выдачи (false) #### Пример запроса ``` https://api.gigma.ru/api/tables/shops?query=Сей ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ {"id": 124, "table_id": 16, "order": 0, "key": "id", "has_icon": 0, "text": "№"}, {"id": 125, "table_id": 16, "order": 1, "key": "name", "has_icon": 1, "text": "Название"}, {"id": 126, "table_id": 16, "order": 2, "key": "branch", "has_icon": 1, "text": "Направление бизнеса"}, {"id": 127, "table_id": 16, "order": 3, "key": "city", "has_icon": 0, "text": "Город"}, {"id": 128, "table_id": 16, "order": 4, "key": "address", "has_icon": 0, "text": "Адрес"}, {"id": 129, "table_id": 16, "order": 5, "key": "creator", "has_icon": 1, "text": "Добавил"}, {"id": 130, "table_id": 16, "order": 6, "key": "schedule", "has_icon": 0, "text": "График работы"} ], "shops": [ { "id": 17, "name": { "icon": "http://localhost:8000//storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "value": "Сей Момент" }, "branch": { "icon": "http://localhost:8000//storage/uploads/b9t9B4Y4Fq6dAKvgVW2vhzFJ12ZrgRgvVHdMnfjt.png", "value": "ИП Дерюгин Дмитрий Александрович" }, "city": { "id": 1, "name": "Москва", "created_at": "2024-04-19T09:18:41.000000Z" }, "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "creator": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Полищук Артём" }, "schedule": "Ежедневно, с 10:00 до 18:00" } ], "pagination": { "total": 4, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 4 } } ``` ##### Описание полей ответа - `columns` — объект, содержащий информацию для генерации таблиц - `id` — первичный ключ - `name` — объект с информацией о названии магазина - `branch` — объект с информацией о бизнесе (первый из массива) - `city` — город, в котором расположен магазин - `address` — полный адрес магазина - `creator` — объект, содержащий информацию о пользователе, который добавил запись в БД - `schedule` — график работы магазина - `per_page` — кол-во элементов на странице - `prev_page_url` — URL предыдущей страницы - `from` — номер первого элемента на выбранной странице - `to` — номер крайнего элемента на выбранной странице - `total` — общее кол-во записей ### Получение списка магазинов **Метод:** GET **URL:** `https://api.gigma.ru/api/shops` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка - `city_id` — ID города из справочника - `branch_id` — ID бизнеса из справочника - `is_shop` — флаг, указывающий на то, является ли значение магазином (true) или пунктом выдачи (false) #### Пример запроса ``` https://api.gigma.ru/api/shops?query=Сей ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "shops": [ { "id": 3, "is_shop": true, "avatar": { "id": 3, "name": "Container.svg", "path": "http://localhost:8000/storage/uploads/J89936UEJYHmqaWyN8TA2JfTfFHWGvt2jequMsyd.svg", "created_at": "2024-04-18T13:37:45.000000Z", "updated_at": "2024-04-18T13:37:45.000000Z" }, "code": "01", "name": "Столичный", "branches": [], "warehouses": [], "address": "г. Москва, ул. Красная Площадь, 1", "latitude": null, "longitude": null, "phone": "+79851234567" } ], "shopsCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `is_shop` — флаг: магазин (`true`) или пункт выдачи (`false`) - `avatar` — объект с информацией о фотографии магазина - `code` — уникальный код магазина - `name` — название магазина - `branches` — массив объектов привязанных бизнесов - `warehouses` — массив объектов привязанных складов - `address` — полный адрес магазина - `latitude` — широта (опционально) - `longitude` — долгота (опционально) - `phone` — телефон ### Добавление магазина **Метод:** POST **URL:** `https://api.gigma.ru/api/shops` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `avatar_id` — ID файла после его загрузки на сервер - `code` — уникальный код магазина - `name` — название магазина - `address` — адрес магазина, полученный из Dadata - `branches[]` — массив ID бизнесов - `warehouses[]` — массив ID складов - `phone` — номер телефона #### Пример запроса ```json { "avatar_id": 1, "is_shop": true, "code": "10", "name": "Сей Момент", "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "branches": [ 15 ], "warehouses": [ 1, 2, 3 ], "phone": "79999999999" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "shop": { "id": 4, "is_shop": true, "avatar": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "code": "10", "name": "Сей Момент", "branches": [ { "id": 15, "code": "1", "name": "ИП Дерюгин Дмитрий Александрович", "photo": null, "owned_by_us": false, "address": "283045, Донецкая Народная респ, г Донецк, ул Профессоров Богославских, д 5а", "storage_capacity": null, "storage_unit": null, "city": null, "counterparty": null } ], "warehouses": [ { "id": 1, "code": null, "name": "Петухова", "photo": null, "owned_by_us": true, "address": "Петухова 155/1 к4", "storage_capacity": 100000, "storage_unit": { "id": 2, "name": "Кубический метр", "abbreviation": "м³" }, "city": { "id": 2, "name": "Новосибирск", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": null }, { "id": 2, "code": null, "name": "Ленина", "photo": null, "owned_by_us": true, "address": "Ленина 25", "storage_capacity": 100000, "storage_unit": { "id": 2, "name": "Кубический метр", "abbreviation": "м³" }, "city": { "id": 2, "name": "Новосибирск", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": null }, { "id": 3, "code": null, "name": "Коледино WB", "photo": null, "owned_by_us": false, "address": "Троицкая улица, 20, деревня Коледино, городской округ Подольск, Московская область", "storage_capacity": 5000000, "storage_unit": { "id": 1, "name": "Литр", "abbreviation": "л" }, "city": { "id": 1, "name": "Москва", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": null } ], "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "phone": "79999999999" } } ``` ##### Описание полей ответа Описание полей ответа приведено в запросе получения выбранного магазина. ### Обновление выбранного магазина **Метод:** PUT **URL:** `https://api.gigma.ru/api/shops/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `avatar_id` — ID файла после его загрузки на сервер - `code` — уникальный код магазина - `name` — название магазина - `address` — адрес магазина, полученный из Dadata - `branches[]` — массив ID бизнесов - `warehouses[]` — массив ID складов - `phone` — номер телефона #### Пример запроса ```json { "avatar_id": 1, "is_shop": true, "code": "10", "name": "Сей Момент", "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "branches": [ 15 ], "warehouses": [ 1, 2, 3 ], "phone": "79999999999" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращаемый объект `shop` аналогичен ответу запроса добавления магазина. ##### Описание полей ответа Описание полей ответа приведено в запросе получения выбранного магазина. ### Получение выбранного магазина **Метод:** GET **URL:** `https://api.gigma.ru/api/shops/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/4 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "shop": { "id": 4, "is_shop": true, "avatar": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "code": "10", "name": "Сей Момент", "branches": [ { "id": 15, "code": "1", "name": "ИП Дерюгин Дмитрий Александрович", "photo": null, "owned_by_us": false, "address": "283045, Донецкая Народная респ, г Донецк, ул Профессоров Богославских, д 5а", "storage_capacity": null, "storage_unit": null, "city": null, "counterparty": null } ], "warehouses": [ { "id": 1, "code": null, "name": "Петухова", "photo": null, "owned_by_us": true, "address": "Петухова 155/1 к4", "storage_capacity": 100000, "storage_unit": { "id": 2, "name": "Кубический метр", "abbreviation": "м³" }, "city": { "id": 2, "name": "Новосибирск", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": null }, { "id": 2, "code": null, "name": "Ленина", "photo": null, "owned_by_us": true, "address": "Ленина 25", "storage_capacity": 100000, "storage_unit": { "id": 2, "name": "Кубический метр", "abbreviation": "м³" }, "city": { "id": 2, "name": "Новосибирск", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": null }, { "id": 3, "code": null, "name": "Коледино WB", "photo": null, "owned_by_us": false, "address": "Троицкая улица, 20, деревня Коледино, городской округ Подольск, Московская область", "storage_capacity": 5000000, "storage_unit": { "id": 1, "name": "Литр", "abbreviation": "л" }, "city": { "id": 1, "name": "Москва", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": null } ], "address": "115477, г Москва, р-н Царицыно, ул Деловая, д 20", "phone": "79999999999", "schedule": "Ежедневно, с 10:00 до 18:00" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `code` — уникальный код магазина - `name` — название магазина - `is_shop` — флаг, указывающий на то, является ли значение магазином (true) или пунктом выдачи (false) - `avatar` — объект с информацией о загруженном файле - `branches` — массив объектов с информацией о бизнесе - `warehouses` — массив объектов с информацией о складе - `address` — адрес магазина - `phone` — номер телефона магазина - `schedule` — график работы ### Удаление выбранного магазина **Метод:** DELETE **URL:** `https://api.gigma.ru/api/shops/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/4 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Shop successfully deleted." } ``` ### Получение истории изменений по выбранному магазину **Метод:** GET **URL:** `https://api.gigma.ru/api/shops/{id}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/4/history ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "histories": [ { "id": 170, "icon": "done", "color": "success", "title": "Редактирование", "description": "Редактирование: Полищук Артём", "datetime": "28.06.2024 06:09" } ], "historiesCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `icon` — иконка - `color` — цвет - `title` — заголовок - `description` — описание - `datetime` — дата выполнения действия ## Режим работы ### Будние/выходные дни ### Получение списка дней и часов работы выбранного магазина **Метод:** GET **URL:** `https://api.gigma.ru/api/shops/{id}/hours` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/17/hours ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "hours": [ { "id": 1, "day_of_week": "ПН", "is_working_day": true, "work_start_time": "09:00:00", "work_end_time": "18:00:00", "break_start_time": null, "break_end_time": null } ], "hoursCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `day_of_week` — день недели - `is_working_day` — флаг, указывающий на то, является ли день рабочим (true) или выходным (false) - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва ### Добавление дней и часов работы выбранного магазина **Метод:** POST **URL:** `https://api.gigma.ru/api/shops/{id}/hours` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `day_of_week` — день недели. Доступные значения: ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС - `is_working_day` — флаг, указывающий на то, является ли день рабочим (true) или выходным (false) - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва #### Пример запроса ```json { "day_of_week": "ПН", "is_working_day": true, "work_start_time": "09:00", "work_end_time": "18:00", "break_start_time": "13:00", "break_end_time": "14:00" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "hour": { "id": 4, "day_of_week": "ПН", "is_working_day": true, "work_start_time": "09:00", "work_end_time": "18:00", "break_start_time": "13:00", "break_end_time": "14:00" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `day_of_week` — день недели - `is_working_day` — флаг, указывающий на то, является ли день рабочим (true) или выходным (false) - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва ### Обновление дней и часов работы выбранного магазина **Метод:** PUT **URL:** `https://api.gigma.ru/api/shops/{id}/hours/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `day_of_week` — день недели. Доступные значения: ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС - `is_working_day` — флаг, указывающий на то, является ли день рабочим (true) или выходным (false) - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва #### Пример запроса ```json { "day_of_week": "ПН", "is_working_day": true, "work_start_time": "09:00", "work_end_time": "18:00", "break_start_time": null, "break_end_time": null } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "hour": { "id": 4, "day_of_week": "ПН", "is_working_day": true, "work_start_time": "09:00", "work_end_time": "18:00", "break_start_time": null, "break_end_time": null } } ``` ##### Описание полей ответа - `id` — первичный ключ - `day_of_week` — день недели - `is_working_day` — флаг, указывающий на то, является ли день рабочим (true) или выходным (false) - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва ### Удаление выбранных дней и часов работы магазина **Метод:** DELETE **URL:** `https://api.gigma.ru/api/shops/{id}/hours/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/17/hours/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Shop hour deleted successfully." } ``` ### Праздничные дни ### Получение графика работы в праздничные дни выбранного магазина **Метод:** GET **URL:** `https://api.gigma.ru/api/shops/{id}/holidays` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/17/holidays ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "holidays": { "work_start_time": "09:00:00", "work_end_time": "18:00:00", "break_start_time": null, "break_end_time": null } } ``` ##### Описание полей ответа - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва ### Обновление графика работы в праздничные дни выбранного магазина **Метод:** POST **URL:** `https://api.gigma.ru/api/shops/{id}/holidays` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва #### Пример запроса ```json { "work_start_time": "09:00", "work_end_time": "18:00", "break_start_time": "12:00", "break_end_time": "13:00" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "holidays": { "work_start_time": "09:00", "work_end_time": "18:00", "break_start_time": "12:00", "break_end_time": "13:00" } } ``` ##### Описание полей ответа - `work_start_time` — время начала рабочего дня - `work_end_time` — время завершения рабочего дня - `break_start_time` — время начала перерыва - `break_end_time` — время окончания перерыва ### Исключения ### Получение списка дней-исключений в работе выбранного магазина **Метод:** GET **URL:** `https://api.gigma.ru/api/shops/{id}/exceptions` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/17/exceptions ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "exceptions": [ { "id": 1, "exception_start_date": "2024-08-10", "exception_end_date": "2024-08-12" } ], "exceptionsCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `exception_start_date` — дата начала периода выходных дней - `exception_end_date` — дата окончания периода выходных дней ### Добавление промежутка дней-исключений для выбранного магазина **Метод:** POST **URL:** `https://api.gigma.ru/api/shops/{id}/exceptions` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `exception_start_date` — дата начала периода выходных дней - `exception_end_date` — дата окончания периода выходных дней #### Пример запроса ```json { "exception_start_date": "2024-08-10", "exception_end_date": "2024-08-12" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "exception": { "id": 1, "exception_start_date": "2024-08-10", "exception_end_date": "2024-08-12" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `exception_start_date` — дата начала периода выходных дней - `exception_end_date` — дата окончания периода выходных дней ### Обновление промежутка дней-исключений для выбранного магазина **Метод:** PUT **URL:** `https://api.gigma.ru/api/shops/{id}/exceptions/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `exception_start_date` — дата начала периода выходных дней - `exception_end_date` — дата окончания периода выходных дней #### Пример запроса ```json { "exception_start_date": "2024-08-10", "exception_end_date": "2024-08-12" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "exception": { "id": 1, "exception_start_date": "2024-08-10", "exception_end_date": "2024-08-12" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `exception_start_date` — дата начала периода выходных дней - `exception_end_date` — дата окончания периода выходных дней ### Удаление промежутка дней-исключения для выбранного магазина **Метод:** DELETE **URL:** `https://api.gigma.ru/api/shops/{id}/exceptions/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/shops/17/exceptions/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Shop exception deleted successfully." } ``` --- ## Меню Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9C%D0%B5%D0%BD%D1%8E/ # Меню Меню — это иерархическое дерево пунктов навигации, привязанное к пользователю. Группа endpoint'ов делится на чтение (отрисовать sidebar) и шаблонные операции (скопировать меню между пользователями/проектами, сохранить как шаблон). ## Чтение текущего меню ### Меню текущего пользователя **Метод:** GET **URL:** `https://api.gigma.ru/api/menus` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Возвращает корневое меню текущего авторизованного пользователя (определяется по Bearer токену). #### Ответ ```json { "menus": [ { "id": 1, "name": "Главное меню", "is_default": true, "created_at": "2024-03-27T07:00:46.000000Z" } ] } ``` ### Пункты меню по умолчанию **Метод:** GET **URL:** `https://api.gigma.ru/api/menus/default/items` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Возвращает дерево пунктов меню по умолчанию (то, что показывается в sidebar админки). #### Ответ ```json { "menuItems": [ { "id": 1, "menu_id": 1, "parent_id": null, "avatar": "https://api.gigma.ru/storage/uploads/dashboard.svg", "name": "Дашборд", "url": "/dashboard", "children": [] }, { "id": 2, "menu_id": 1, "parent_id": null, "avatar": "https://api.gigma.ru/storage/uploads/orders.svg", "name": "Заказы", "url": "/orders", "children": [ { "id": 3, "menu_id": 1, "parent_id": 2, "avatar": "https://api.gigma.ru/storage/uploads/orders-list.svg", "name": "Список заказов", "url": "/orders/list", "children": [] } ] } ], "menuItemsCount": 3 } ``` ##### Описание полей ответа - `menuItems[]` — пункты меню в виде дерева: - `id` — ID пункта - `menu_id` — ID меню-владельца - `parent_id` — ID родителя (`null` для корневых) - `avatar` — URL иконки - `name` — отображаемое название - `url` — путь, на который ведёт пункт (опционально, у группирующих пунктов отсутствует) - `children[]` — массив дочерних пунктов (рекурсивно) - `menuItemsCount` — общее количество пунктов ## Шаблонные операции ### Скопировать меню текущего пользователя указанному **Метод:** POST **URL:** `https://api.gigma.ru/api/users/{id}/attach_menu` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Берёт меню текущего (авторизованного) пользователя и привязывает его к пользователю с указанным `id`. Тело запроса пустое — оба меню определяются из контекста: текущий пользователь по токену, целевой по URL. #### Параметры запроса Только `id` целевого пользователя в пути URL. Тело пустое. #### Пример запроса ``` POST https://api.gigma.ru/api/users/51/attach_menu ``` #### Ответ ```json { "message": "Menu has been attached." } ``` ### Скопировать меню текущего пользователя всем пользователям проекта **Метод:** POST **URL:** `https://api.gigma.ru/api/attach_menu_to_project` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Берёт меню текущего пользователя и применяет его ко всем пользователям его текущего проекта (бизнеса). #### Параметры запроса Тело пустое. #### Ответ ```json { "message": "Menu has been attached." } ``` ### Сохранить меню пользователя как шаблон **Метод:** POST **URL:** `https://api.gigma.ru/api/users/{id}/create_menu_from_user_items` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Создаёт новое именованное меню (шаблон) на основе текущего меню указанного пользователя. #### Параметры запроса (тело) - `name` — название нового меню #### Пример запроса ``` POST https://api.gigma.ru/api/users/51/create_menu_from_user_items ``` ```json { "name": "Главное меню (Retail)" } ``` #### Ответ ```json { "message": "Menu has been created." } ``` --- ## Номенклатура Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9D%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D0%B0/ # Номенклатура Раздел API для управления номенклатурой системы ERP: категории товаров, теги, типы, виды и сами позиции номенклатуры. ## Категории ### Получение списка категорий **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/categories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `page` — текущая страница (пагинация) - `per_page` — количество элементов на странице - `query` — поисковая строка - `date_from` — фильтр по дате добавления (от) - `date_to` — фильтр по дате добавления (до) #### Пример запроса ``` https://api.gigma.ru/api/tables/categories?query=сей&date_from=30-01-2024 ``` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает данные категорий с метаданными столбцов, объекты категорий, содержащие: `id`, `code`, `date`, `parent`, `name` (с иконкой), `creator` (с иконкой), `type`, и информацию о пагинации. ### Получение выбранной категории **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/categories/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает один объект категории с полями: `id`, `code`, `name`, `description`, `parent`, `photo`, `avatar`, `tags`. ### Обновление выбранной категории **Метод:** PUT **URL:** `https://api.gigma.ru/api/categories/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `code` — уникальный системный код - `name` — название категории - `description` — описание в формате HTML - `parent_id` — родительская категория - `avatar_id` — ID файла аватара - `photo_id` — ID файла фотографии - `tag_id[]` — массив ID тегов #### Ответ При успешном действии возвращается HTTP код `200`. ### Добавление категории **Метод:** POST **URL:** `https://api.gigma.ru/api/categories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса ⚠ Реальный minimum (сверено): только `name`. `code` рекомендуется задавать вручную для дедупа, но бэкенд его не требует. - `name` *(string, обязательно)* — название категории - `code` *(string, опционально)* — уникальный системный код категории - `description` *(string, опционально)* — описание в формате HTML - `parent_id` *(int, опционально)* — ID родительской категории (для вложенности) - `avatar_id` *(int, опционально)* — ID файла аватара (из `POST /api/files`) - `photo_id` *(int, опционально)* — ID файла основной фотографии - `tag_id` *(int[], опционально)* — массив ID тегов #### Пример запроса ```json { "code": "CAT-001", "name": "Косметика", "description": "

Категория косметической продукции

", "parent_id": 1, "avatar_id": 42, "photo_id": 43, "tag_id": [1, 2] } ``` #### Ответ При успешном действии возвращается HTTP код `201` с созданным объектом категории. ```json { "category": { "id": 17, "code": "CAT-001", "name": "Косметика", "description": "

Категория косметической продукции

", "parent": { "id": 1, "name": "Товары для дома" }, "avatar": { "id": 42, "path": "https://api.gigma.ru/storage/uploads/abc.jpg" }, "photo": { "id": 43, "path": "https://api.gigma.ru/storage/uploads/def.jpg" }, "tags": [{ "id": 1, "name": "новинка" }, { "id": 2, "name": "хит" }], "created_at": "2026-05-16T07:00:00.000000Z", "updated_at": "2026-05-16T07:00:00.000000Z" } } ``` ### Получение истории изменений категории **Метод:** GET **URL:** `https://api.gigma.ru/api/categories/{id}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает массив объектов истории с полями: `id`, `icon`, `color`, `title`, `description`, `datetime`, `historiesCount`. ## Теги ### Получение списка тегов **Метод:** GET **URL:** `https://api.gigma.ru/api/tags` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает массив тегов с полями: `id`, `name`, `avatar` (URL), `created_at`, `tagsCount`. ## Типы ### Получение списка типов номенклатуры **Метод:** GET **URL:** `https://api.gigma.ru/api/nomenclature_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает типы номенклатуры с полями: `id`, `name`, `avatar`, `created_at`, `nomenclatureTypesCount`. ## Виды ### Получение списка видов номенклатуры **Метод:** GET **URL:** `https://api.gigma.ru/api/nomenclature_kinds` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает массив видов с полями: `id`, `name`, `avatar`, `created_at`, `nomenclatureKindsCount`. ## Номенклатура ### Получение списка номенклатуры (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/nomenclatures` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка - `type_id[]` — фильтр по ID типов - `kind_id[]` — фильтр по ID видов - `is_import` — boolean (1 — импортные, 0 — отечественные) #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает метаданные столбцов и позиции номенклатуры с полями: `id`, `code`, `name`, `type`, `kind`, `brand`, `unit`, `is_import`, `country`. ### Получение списка номенклатуры **Метод:** GET **URL:** `https://api.gigma.ru/api/nomenclatures` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Те же параметры, что и для табличного представления, плюс `page` и `per_page`. #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает данные номенклатуры с пагинацией. Объекты содержат: `id`, `code`, `name`, `avatar`, `preview`, `description`, `category`, `specification`, `country`, `type`, `kind`, `branch`, `tags`, `photos`, `unit`, `brand`, `price`, `cost_price`, `discount`, `vat`, `markup`, `pieces_per_pack`, `is_subscription`, `billing_period_months`, `parent_nomenclature_id`, `variant_label`, `variant_sort_order`, временные метки создания и обновления. ### Добавление позиции номенклатуры **Метод:** POST **URL:** `https://api.gigma.ru/api/nomenclatures` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса ⚠ **Реальный minimum** (сверено через `POST {}` → 422): `name` + `kind_id`. Остальные технически опциональны, но для боевого создания обычно нужны `code`, `type_id`, `storage_unit_id`, `vat_id`, `price`. - `name` *(string, обязательно)* — наименование позиции - `kind_id` *(int, обязательно)* — ID вида (1=Услуга, 2=Товар; `GET /api/nomenclature_kinds`) - `code` *(string, опционально)* — уникальный SKU позиции (рекомендуется ставить вручную) - `type_id` *(int, опционально)* — ID типа (`GET /api/nomenclature_types`) - `storage_unit_id` *(int, опционально)* — ID единицы измерения (`GET /api/storage_units` — **не** `/api/units`) - `vat_id` *(int, опционально)* — ID ставки НДС (`GET /api/vats`) - `price` *(string, опционально)* — цена в формате decimal-string, 2 знака (`"1000.00"`). Для услуг — обязательно по бизнес-логике. - `category_id` *(int, опционально)* — ID категории (`GET /api/categories`) - `brand_id` *(int, опционально)* — ID бренда (`GET /api/brands`) - `country_id` *(int, опционально)* — ID страны производства - `branch_id` *(int, опционально)* — ID бизнеса/филиала - `description` *(string, опционально)* — HTML-описание для карточки - `specification` *(string, опционально)* — HTML-характеристики - `cost_price` *(string, опционально)* — себестоимость, decimal-string - `markup` *(int, опционально)* — процент наценки - `discount` *(int, опционально)* — процент скидки - `avatar_id` *(int, опционально)* — ID файла-аватара (из `POST /api/files` c `file_type_id=2`) - `preview_id` *(int, опционально)* — ID файла превью-картинки - `photos` *(object[], опционально)* — массив дополнительных фото: `[{photo_id, order}]` - `tags` *(int[], опционально)* — массив ID тегов #### Пример запроса ```json { "code": "SKU-001", "name": "Крем для лица «Нежность»", "kind_id": 2, "type_id": 1, "storage_unit_id": 1, "vat_id": 2, "price": "1000.00", "category_id": 17, "brand_id": 7, "country_id": 3, "branch_id": 5, "description": "

Увлажняющий крем с гиалуроновой кислотой.

", "specification": "

Объём: 50 мл. Срок годности: 24 месяца.

", "cost_price": "700.00", "markup": 30, "discount": 0, "avatar_id": 42, "preview_id": 43, "photos": [ { "photo_id": 44, "order": 1 }, { "photo_id": 45, "order": 2 } ], "tags": [1, 2] } ``` #### Ответ При успешном действии возвращается HTTP код `201` с созданным объектом номенклатуры. ```json { "nomenclature": { "id": 100, "code": "SKU-001", "name": "Крем для лица «Нежность»", "kind": { "id": 2, "name": "Товар" }, "type": { "id": 1, "name": "Простой" }, "unit": { "id": 1, "name": "Штука" }, "vat": { "id": 2, "rate": 20 }, "price": "1000.00", "cost_price": "700.00", "markup": 30, "discount": 0, "category": { "id": 17, "name": "Косметика" }, "brand": { "id": 7, "name": "Nivea" }, "country": { "id": 3, "name": "Россия" }, "branch": { "id": 5, "name": "Главный филиал" }, "description": "

...

", "specification": "

...

", "avatar": { "id": 42, "path": "https://api.gigma.ru/storage/uploads/avatar.jpg" }, "preview": { "id": 43, "path": "https://api.gigma.ru/storage/uploads/preview.jpg" }, "photos": [ { "id": 44, "path": "https://api.gigma.ru/storage/uploads/p1.jpg", "order": 1 }, { "id": 45, "path": "https://api.gigma.ru/storage/uploads/p2.jpg", "order": 2 } ], "tags": [{ "id": 1, "name": "новинка" }, { "id": 2, "name": "хит" }], "created_at": "2026-05-16T07:00:00.000000Z", "updated_at": "2026-05-16T07:00:00.000000Z" } } ``` ### Обновление позиции номенклатуры **Метод:** PUT **URL:** `https://api.gigma.ru/api/nomenclatures/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Те же параметры, что и в эндпоинте добавления. #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение выбранной позиции номенклатуры **Метод:** GET **URL:** `https://api.gigma.ru/api/nomenclatures/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает полный объект позиции со всеми полями: `id`, `code`, `name`, `avatar`, `preview`, `description`, `category`, `specification`, `country`, `type`, `kind`, `branch`, `tags`, `photos`, `unit`, `brand`, `price`, `cost_price`, `discount`, `vat`, `markup`, `pieces_per_pack`, `is_subscription`, `billing_period_months`, `parent_nomenclature_id`, `variant_label`, `variant_sort_order`, временные метки. ##### Описание дополнительных полей - `pieces_per_pack` *(int)* — количество единиц в упаковке - `is_subscription` *(bool)* — является ли позиция подпиской (recurring billing) - `billing_period_months` *(int|null)* — период подписки в месяцах (заполнено только если `is_subscription = true`) - `parent_nomenclature_id` *(int|null)* — ID родительской позиции (для вариантов товара) - `variant_label` *(string|null)* — метка варианта (напр. «Красный / L») - `variant_sort_order` *(int|null)* — порядок отображения среди вариантов ### Получение истории изменений позиции номенклатуры **Метод:** GET **URL:** `https://api.gigma.ru/api/nomenclatures/{id}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. Возвращает массив истории с полями: `id`, `icon`, `color`, `title`, `description`, `datetime`. ## Экспорт и импорт ### Экспорт файла номенклатуры **Метод:** POST **URL:** `https://api.gigma.ru/api/nomenclatures/export` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Импорт файла номенклатуры **Метод:** POST **URL:** `https://api.gigma.ru/api/nomenclatures/import` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` со статусом импорта и описанием полей. --- ## Остатки Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9E%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8/ # Остатки Раздел API для управления остатками товаров по складам в системе ERP: просмотр, создание, обновление и импорт записей инвентаря. ### Получение списка остатков (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/inventories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка - `owned_by_us` — иерархия складов (true/false) - `warehouse_id[]` — массив ID складов - `type_id[]` — массив ID типов товаров - `city_id[]` — массив ID городов - `brand_id[]` — массив ID производителей - `vat_id[]` — ID НДС - `application_id[]` — ID приложения #### Ответ При успешном действии возвращается HTTP код `200` с массивом `columns`, объектом `warehouseNomenclatures` и данными пагинации. ### Получение списка остатков (JSON) **Метод:** GET **URL:** `https://api.gigma.ru/api/inventories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` ⚠ **Backend bug:** на боевых данных возвращает `IncompleteRead(0 bytes read)` — запрос обрывается без ответа. Причина: нет пагинации (`->get()` без `->paginate()`), при большом каталоге сервер не успевает отдать весь ответ. Пока не починено — используй табличный эндпоинт с пагинацией (`GET /api/tables/inventories?per_page=50`). #### Ответ При успешном действии возвращается HTTP код `200` с массивом `inventories`, содержащим полные данные о товарах, количестве, ценах и НДС. ### Создание записи остатка **Метод:** POST **URL:** `https://api.gigma.ru/api/inventories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса ⚠ Реальный minimum (сверено): `nomenclature_id` + `warehouse_id`. Остальные опциональны на уровне валидатора, но `quantity` и `price` обязательны по смыслу. - `nomenclature_id` *(int, обязательно)* — ID номенклатуры (`GET /api/nomenclatures`) - `warehouse_id` *(int, обязательно)* — ID склада (`GET /api/warehouses`) - `code` *(string, опционально)* — код позиции остатка - `vat_id` *(int, опционально)* — ID ставки НДС (`GET /api/vats`) - `quantity` *(int, опционально)* — количество в штуках, неотрицательное целое - `price` *(string, опционально)* — цена в формате decimal-string, 2 знака (`"1000.00"`) - `discount` *(int, опционально)* — процент скидки, 0–100 - `markup` *(int, опционально)* — процент наценки #### Пример запроса ```json { "code": "INV-001", "warehouse_id": 5, "nomenclature_id": 100, "vat_id": 2, "quantity": 50, "price": "1000.00", "discount": 0, "markup": 30 } ``` #### Ответ При успешном действии возвращается HTTP код `201` с созданным объектом остатка. ```json { "inventory": { "id": 200, "code": "INV-001", "warehouse": { "id": 5, "name": "Главный склад" }, "nomenclature": { "id": 100, "name": "Крем для лица «Нежность»", "code": "SKU-001", "avatar": "https://api.gigma.ru/storage/uploads/avatar.jpg" }, "counterparty": { "id": 3, "name": "ООО Поставщик", "inn": "7712345678", "type_id": 1 }, "invoice": { "number": "РН-001", "date": "2026-05-16", "row_number": 1 }, "vat": { "id": 2, "name": "НДС 20%" }, "vat_rate": "20%", "vat_amount": "166.67", "quantity": 50, "price": "1000.00", "line_total_without_vat": "50000.00", "line_total_with_vat": "50000.00", "currency_code": "RUB", "discount": 0, "markup": 30, "created_at": "2026-05-16T07:00:00.000000Z", "updated_at": "2026-05-16T07:00:00.000000Z" } } ``` ##### Описание новых полей - `nomenclature.avatar` *(string|null)* — URL аватара номенклатуры - `counterparty` *(object|null)* — поставщик: `id`, `name`, `inn`, `type_id` - `invoice` *(object|null)* — реквизиты накладной: `number`, `date`, `row_number` - `vat` *(object|null)* — ставка НДС как объект `{id, name}` (не просто число) - `vat_rate` *(string|null)* — строковое представление ставки («20%», «10%», «0%») - `vat_amount` *(string|null)* — сумма НДС по строке, decimal-string - `line_total_without_vat` *(string|null)* — итого по строке без НДС - `line_total_with_vat` *(string|null)* — итого по строке с НДС - `currency_code` *(string|null)* — код валюты ISO 4217 (`"RUB"`) ### Обновление записи остатка **Метод:** PUT **URL:** `https://api.gigma.ru/api/inventories/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Те же параметры, что и в эндпоинте создания. #### Ответ При успешном действии возвращается HTTP код `200` с обновлённым объектом остатка. ### Получение выбранного остатка **Метод:** GET **URL:** `https://api.gigma.ru/api/inventories/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с полной информацией о складе, номенклатуре, количестве, цене и НДС. ### Получение истории изменений остатка **Метод:** GET **URL:** `https://api.gigma.ru/api/inventories/{id}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с записями истории, содержащими `icon`, `color`, `title`, `description`, `datetime`. ### Импорт остатков **Метод:** POST **URL:** `https://api.gigma.ru/api/inventories/upload` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Два режима в зависимости от `Content-Type`. В обоих режимах `warehouse_id` обязателен. **Режим А** (`multipart/form-data`): передаётся `file` — Excel `.xmr`. **Режим Б** (`application/json`): передаётся `items[]` с полями накладной. ⚠ Реальный minimum (сверено через `POST {}` → 422): `warehouse_id` + (`file` **или** `items[]` со всеми полями ниже). #### Параметры запроса - `warehouse_id` *(int, обязательно)* — ID склада (`GET /api/warehouses`). Обязателен в обоих режимах. - `file` *(binary, опционально)* — Excel-файл `.xmr`; режим А. Если передан — поля накладной и `items` не нужны. - `invoice_number` *(string, опционально)* — номер накладной; обязателен в режиме Б. - `invoice_date` *(string, опционально)* — дата накладной ISO 8601 (`"2026-05-16"`); обязателен в режиме Б. - `supplier_inn` *(string, опционально)* — ИНН поставщика; обязателен в режиме Б. - `supplier_name` *(string, опционально)* — наименование поставщика; обязателен в режиме Б. - `currency_code` *(string, опционально)* — код валюты ISO 4217 (`"RUB"`); обязателен в режиме Б. - `items` *(object[], опционально)* — строки накладной; обязателен в режиме Б. Каждая строка: - `row_number` *(int, обязательно)* — порядковый номер строки - `item_name` *(string, обязательно)* — наименование товара - `quantity` *(number, обязательно)* — количество - `price` *(string, обязательно)* — цена за единицу, decimal-string (`"4000.00"`) - `sum_without_vat` *(string, обязательно)* — сумма без НДС, decimal-string - `sum_with_vat` *(string, обязательно)* — сумма с НДС, decimal-string - `vat_rate` *(string, обязательно)* — ставка НДС: `"0%"`, `"10%"`, `"20%"` #### Пример запроса (режим А — файл) ```bash curl -X POST https://api.gigma.ru/api/inventories/upload \ -H "Authorization: Bearer $TOKEN" \ -H "Accept: application/json" \ -F "warehouse_id=1" \ -F "file=@./inventories.xmr" ``` #### Пример запроса (режим Б — JSON) ```json { "warehouse_id": 1, "invoice_number": "РН-001", "invoice_date": "2026-05-16", "supplier_inn": "7712345678", "supplier_name": "ООО Поставщик", "currency_code": "RUB", "items": [ { "row_number": 1, "item_name": "Микрофон Shure SM58", "quantity": 5, "price": "4000.00", "sum_without_vat": "20000.00", "sum_with_vat": "20000.00", "vat_rate": "0%" } ] } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Import successful" } ``` При ошибках формата — `422` с описанием проблемных строк в `errors`. --- ## Пользователи Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8/ # Пользователи Endpoint'ы делятся на два слоя: 1. **Полный поиск пользователей** (`/api/users`) — возвращает развёрнутые объекты пользователей с ролями, филиалами, правами. 2. **Упрощённые списки** (`/api/managers`, `/api/responsible_users`) — для UI-фильтров и dropdown'ов, возвращают только `id` и `name`. См. также: [ERP/Авторизация](/ERP/Авторизация/) для получения текущего пользователя (`GET /api/user`). ### Поиск пользователей **Метод:** GET **URL:** `https://api.gigma.ru/api/users` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (query string) - `query` — поисковая строка по ФИО или login #### Пример запроса ``` GET https://api.gigma.ru/api/users?query=Stewart ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "users": [ { "id": 31, "role": { "id": 3, "name": "manager", "avatar": null, "description": "Руководитель отдела", "created_at": "2024-03-27T07:00:46.000000Z" }, "branch": { "id": 1, "name": "ООО \"АЙТЕКО\"", "avatar": "https://api.gigma.ru/storage/uploads/9qzh2GCaYpRpaxXnql0JZYpIesu3qlvQLV2OBhcN.png", "created_at": "2024-03-27T07:26:29.000000Z" }, "department": { "id": 1, "name": "Технический", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "login": "yaroslav42@er.fs", "phone": "71235512351", "first_name": "Jon", "last_name": "Doe", "middle_name": "Stewart", "birthday": "2024-07-03", "employment_date": null, "dismissal_date": null, "avatar": { "id": 456, "name": "photo.jpg", "type": { "id": 2, "name": "Аватар", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/YiSnszaC109sWAJKsvcWvK6IDR8sF1JC3X9Nve5X.jpg", "created_at": "2024-07-24T10:48:49.000000Z", "updated_at": "2024-07-24T10:48:49.000000Z" }, "employment_contract": null, "is_banned": false, "is_sick": false, "creator": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "active_time": 0, "last_activity_at": null, "permissions": [], "created_at": "2024-07-19T16:14:14.000000Z", "updated_at": "2024-07-25T12:19:56.000000Z" } ], "usersCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `role` — роль в системе (`id`, `name`, `description`) - `branch` — филиал, к которому привязан - `department` — отдел - `login` — логин (email) - `phone` — телефон - `first_name`, `last_name`, `middle_name`, `birthday` — ФИО + ДР - `employment_date`, `dismissal_date` — даты трудоустройства/увольнения - `avatar` — объект файла аватара или `null` - `employment_contract` — файл трудового договора или `null` - `is_banned`, `is_sick` — флаги - `creator` — кто завёл этого пользователя - `active_time`, `last_activity_at` — активность - `permissions[]` — массив прав доступа - `created_at`, `updated_at` — таймстампы ### Список менеджеров (упрощённый) **Метод:** GET **URL:** `https://api.gigma.ru/api/managers` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Минимальный список пользователей, имеющих роль менеджера. Используется в фильтрах таблиц контрагентов, заказов и т.п. #### Ответ ```json { "managers": [ { "id": 1, "name": "Полищук Артём" }, { "id": 2, "name": "Жуков Алексей" } ], "managersCount": 2 } ``` ##### Описание полей ответа - `managers[]` — массив: `id`, `name` (готовая склейка ФИО) - `managersCount` — общее количество ### Список ответственных пользователей **Метод:** GET **URL:** `https://api.gigma.ru/api/responsible_users` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Используется в фильтре «Ответственный» в таблице бизнесов и других местах. #### Ответ ```json { "responsibleUsers": [ { "id": 2, "name": "Жуков Алексей" }, { "id": 3, "name": "Иванов Сергей" } ], "responsibleUsersCount": 2 } ``` --- ## Приложения Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/ # Приложения Раздел API для управления приложениями в системе ERP. Поддерживает получение списка приложений, управление вебхуками, категориями, брендами и пунктами меню приложения. ## Приложения ### Получение списка приложений **Метод:** GET **URL:** `https://api.gigma.ru/api/applications` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `page` — текущая страница - `per_page` — количество элементов на странице - `query` — поисковая строка - `date_from` — фильтр по дате (от) - `date_to` — фильтр по дате (до) #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение выбранного приложения **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "application": { "id": 1, "branch": { "id": 5, "name": "Главный филиал" }, "is_website": false, "photo": null, "code": "APP-001", "name": "Интернет-магазин", "is_token_active": true, "wholesale": false, "token": "abc123token", "success_payment_url": "https://myshop.ru/success", "warehouses": [{ "id": 3, "name": "Склад №1" }], "sales_strategy": { "id": 1, "name": "Стандартная" } } } ``` ##### Описание полей - `branch` — объект филиала (`id`, `name`) - `is_website` *(bool)* — является ли приложение сайтом - `photo` — объект файла-обложки (или `null`) - `code` — уникальный код приложения - `name` — название приложения - `is_token_active` *(bool)* — активен ли API-токен приложения - `wholesale` *(bool)* — работает ли приложение в оптовом режиме - `token` *(string|null)* — API-токен приложения для E-Commerce запросов - `success_payment_url` *(string|null)* — URL редиректа после успешной оплаты - `warehouses` — массив складов, привязанных к приложению - `sales_strategy` *(object|null)* — стратегия продаж (`id`, `name`) ## Вебхуки приложения ### Получение списка вебхуков **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с массивом вебхуков приложения. ### Создание вебхука **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `url` *(string, обязательно)* — URL для отправки вебхуков - `events` *(string[], опционально)* — массив подписанных событий #### Ответ При успешном действии возвращается HTTP код `201` с созданным вебхуком. ### Получение выбранного вебхука **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks/{webhook_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с объектом вебхука. ### Обновление вебхука **Метод:** PATCH **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks/{webhook_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Те же параметры, что и при создании (частичное обновление). #### Ответ При успешном действии возвращается HTTP код `200` с обновлённым вебхуком. ### Удаление вебхука **Метод:** DELETE **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks/{webhook_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение доставок вебхука **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks/{webhook_id}/deliveries` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с историей доставок вебхука. ### Повторная доставка вебхука **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks/{webhook_id}/resend` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Ротация секрета вебхука **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/webhooks/{webhook_id}/rotate-secret` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Генерирует новый секрет для подписи полезной нагрузки вебхука. #### Ответ При успешном действии возвращается HTTP код `200` с новым секретом. ## Категории приложения ### Получение списка категорий приложения (табличное) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/applications/{id}/categories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение списка категорий приложения **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/categories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Добавление категории в приложение **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/categories` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `category_id` — ID категории #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение категории приложения **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/categories/{category_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Удаление категории из приложения **Метод:** DELETE **URL:** `https://api.gigma.ru/api/applications/{id}/categories/{category_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с сообщением подтверждения. ### Повышение приоритета категории **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/categories/{category_id}/up` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Понижение приоритета категории **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/categories/{category_id}/down` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ## Бренды приложения ### Получение списка брендов приложения (табличное) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/applications/{id}/brands` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение списка брендов приложения **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/brands` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Добавление бренда в приложение **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/brands` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `brand_id` — ID бренда #### Ответ При успешном действии возвращается HTTP код `200`. ### Получение бренда приложения **Метод:** GET **URL:** `https://api.gigma.ru/api/applications/{id}/brands/{brand_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Удаление бренда из приложения **Метод:** DELETE **URL:** `https://api.gigma.ru/api/applications/{id}/brands/{brand_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с сообщением подтверждения. ### Повышение приоритета бренда **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/brands/{brand_id}/up` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Понижение приоритета бренда **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/brands/{brand_id}/down` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ## Пункты меню ### Получение списка пунктов меню (табличное) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/applications/{id}/menu_items` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Создание пункта меню **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/menu_items` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` — название пункта меню - `slug` — slug - `parent_id` — ID родительского пункта - `avatar_id` — ID файла аватара - `preview_id` — ID файла превью #### Ответ При успешном действии возвращается HTTP код `200`. ### Обновление пункта меню **Метод:** PUT **URL:** `https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Те же параметры, что и в эндпоинте создания. #### Ответ При успешном действии возвращается HTTP код `200`. ### Удаление пункта меню **Метод:** DELETE **URL:** `https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с сообщением подтверждения. ### Повышение приоритета пункта меню **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}/up` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Понижение приоритета пункта меню **Метод:** POST **URL:** `https://api.gigma.ru/api/applications/{id}/menu_items/{menu_item_id}/down` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. --- ## Промоакции Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%9F%D1%80%D0%BE%D0%BC%D0%BE%D0%B0%D0%BA%D1%86%D0%B8%D0%B8/ # Промоакции и скидки ## Промоакции ### Получение списка промоакций **Метод:** GET **URL:** `https://api.gigma.ru/api/promotions` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "promotions": [ { "id": 1, "name": "Тестовая промоакция", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-07-27T18:13:40.000000Z" } ], "promotionsCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ промоакции - `name` — название промоакции - `avatar` — URL изображения - `created_at` — дата и время добавления в систему ## Скидки ### Получение списка скидок **Метод:** GET **URL:** `https://api.gigma.ru/api/discounts` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка - `status` — фильтр по статусу - `application_id` — фильтр по приложению #### Ответ При успешном действии возвращается HTTP код `200` с массивом `discounts` и `discountsCount`. ### Создание скидки **Метод:** POST **URL:** `https://api.gigma.ru/api/discounts` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` *(string, обязательно)* — название скидки - `application_id` *(int, обязательно)* — ID приложения - `discount_type` *(string)* — тип: `"percent"` | `"fixed"` - `discount_value` *(string)* — значение скидки, decimal-string - `code` *(string, опционально)* — промокод - `description` *(string, опционально)* — описание - `min_order_amount` *(string, опционально)* — минимальная сумма заказа для применения - `max_discount_amount` *(string, опционально)* — максимальная сумма скидки - `total_usage_limit` *(int, опционально)* — лимит использований всего - `per_client_usage_limit` *(int, опционально)* — лимит использований на одного клиента - `audience` *(string, опционально)* — аудитория: `"all"` | `"new"` | `"returning"` - `starts_at` *(string, опционально)* — дата начала ISO 8601 - `ends_at` *(string, опционально)* — дата окончания ISO 8601 #### Ответ При успешном действии возвращается HTTP код `201` с созданной скидкой. ### Получение выбранной скидки **Метод:** GET **URL:** `https://api.gigma.ru/api/discounts/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "discount": { "id": 1, "project_id": 10, "application_id": 1, "branch_id": 5, "name": "Скидка 10% на первый заказ", "code": "FIRST10", "description": "Для новых покупателей", "status": "active", "effective_status": "active", "discount_type": "percent", "discount_value": "10.00", "min_order_amount": "500.00", "max_discount_amount": "1000.00", "total_usage_limit": 100, "total_used_count": 5, "per_client_usage_limit": 1, "usage_percent": 5, "audience": "new", "starts_at": "2026-01-01T00:00:00.000000Z", "ends_at": "2026-12-31T23:59:59.000000Z", "url": null, "paused_at": null, "archived_at": null, "share_path": "/share/discount/FIRST10", "magic_link": "https://api.gigma.ru/api/d/FIRST10", "created_by": { "id": 1, "name": "Артём" }, "updated_by": null, "created_at": "2026-01-01T00:00:00.000000Z", "updated_at": "2026-01-01T00:00:00.000000Z", "latest_usages": [] } } ``` ##### Описание полей ответа - `status` — статус скидки (задан вручную): `"active"` | `"paused"` | `"archived"` - `effective_status` — реальный статус с учётом дат и лимитов (может отличаться от `status`) - `discount_type` — тип скидки: `"percent"` (процент) | `"fixed"` (фиксированная сумма) - `discount_value` — значение скидки, decimal-string - `total_used_count` — сколько раз скидка уже применялась - `usage_percent` — процент использования от `total_usage_limit` (0–100) - `audience` — кому доступна скидка: `"all"` | `"new"` | `"returning"` - `share_path` — путь для шаринга промокода в E-Commerce приложении - `magic_link` — прямая ссылка для активации скидки - `paused_at` — время постановки на паузу (или `null`) - `archived_at` — время архивирования (или `null`) - `latest_usages` — последние применения скидки (массив объектов) ### Обновление скидки **Метод:** PUT **URL:** `https://api.gigma.ru/api/discounts/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Те же параметры, что и при создании. #### Ответ При успешном действии возвращается HTTP код `200` с обновлённой скидкой. ### Удаление скидки **Метод:** DELETE **URL:** `https://api.gigma.ru/api/discounts/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ### Статистика скидок **Метод:** GET **URL:** `https://api.gigma.ru/api/discounts/stats` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` со сводной статистикой по скидкам (количество активных, на паузе, архивных, итоговая экономия покупателей и т.п.). ### Поставить скидку на паузу **Метод:** POST **URL:** `https://api.gigma.ru/api/discounts/{id}/pause` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Временно останавливает скидку. `effective_status` становится `"paused"`, поле `paused_at` заполняется. #### Ответ При успешном действии возвращается HTTP код `200` с обновлённым объектом скидки. ### Активировать скидку **Метод:** POST **URL:** `https://api.gigma.ru/api/discounts/{id}/activate` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Снимает паузу и возобновляет скидку. `paused_at` сбрасывается в `null`. #### Ответ При успешном действии возвращается HTTP код `200` с обновлённым объектом скидки. ### Архивировать скидку **Метод:** POST **URL:** `https://api.gigma.ru/api/discounts/{id}/archive` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` Переводит скидку в архив. `archived_at` заполняется текущим временем. #### Ответ При успешном действии возвращается HTTP код `200` с обновлённым объектом скидки. ### Использования скидки **Метод:** GET **URL:** `https://api.gigma.ru/api/discounts/{id}/usages` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с историей применений скидки (кто, когда, в каком заказе). --- ## Резервирование Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/ # Резервирование Резерв — это блокировка количества номенклатуры на складе под клиента/заказ. В реальном коде ERP-админки используется только табличное представление и удаление; полный CRUD (создание/редактирование, история) пока не доступен через API. ### Таблица резервов **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/reservations` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса (query string) - `query` — поисковая строка - `order_id` — фильтр по ID заказа - `date_from` — «дата с…» (от даты бронирования) - `date_to` — «дата по…» - `page`, `per_page` — пагинация #### Пример запроса ``` GET https://api.gigma.ru/api/tables/reservations?query=номенклатура&date_from=2025-02-20 ``` #### Ответ ```json { "columns": [ { "id": 178, "table_id": 22, "order": 0, "key": "code", "has_icon": 0, "text": "Код" }, { "id": 179, "table_id": 22, "order": 1, "key": "order", "has_icon": 0, "text": "Заказ" }, { "id": 180, "table_id": 22, "order": 2, "key": "created_at", "has_icon": 0, "text": "Дата" }, { "id": 181, "table_id": 22, "order": 3, "key": "name", "has_icon": 1, "text": "Наименование" }, { "id": 182, "table_id": 22, "order": 4, "key": "counterparty", "has_icon": 1, "text": "Клиент" }, { "id": 183, "table_id": 22, "order": 5, "key": "warehouse", "has_icon": 1, "text": "Склад" }, { "id": 184, "table_id": 22, "order": 6, "key": "source", "has_icon": 1, "text": "Источник" }, { "id": 185, "table_id": 22, "order": 7, "key": "quantity", "has_icon": 0, "text": "Кол-во" }, { "id": 186, "table_id": 22, "order": 8, "key": "price", "has_icon": 0, "text": "Цена" }, { "id": 187, "table_id": 22, "order": 9, "key": "expired_at", "has_icon": 0, "text": "Срок до" }, { "id": 188, "table_id": 22, "order": 10, "key": "is_active", "has_icon": 0, "text": "Активный" }, { "id": 189, "table_id": 22, "order": 11, "key": "creator", "has_icon": 1, "text": "Добавил" } ], "reservations": [ { "id": { "icon": null, "value": 193, "url": "/inventories/list-inventories/57013" }, "code": { "icon": null, "value": "1", "url": "/inventories/list-inventories/57013" }, "created_at": "2025-03-07T11:08:52.000000Z", "name": { "icon": "https://api.gigma.ru/storage/uploads/FCusoYbrnJTaiN8C0bWmNt4HxZLru0ItXEBaH9UW.jpg", "value": "Line Repair Nutrient Bio Satin Serum Сыворотка «Био-Сатин», 30 мл", "link": "/inventories/list-inventories/57013" }, "counterparty": { "icon": "https://api.gigma.ru/storage/uploads/default.svg", "value": "Крушанов Александр", "link": "/counterparty/list-counterparty/121" }, "warehouse": { "icon": "https://api.gigma.ru/storage/uploads/tsLs3JTSLCTFgSyDsdtxFsweHEbTTvn0HeqUepNr.webp", "value": "Склад для приложения", "link": "/warehouses/list-warehouses/50" }, "source": { "icon": "https://api.gigma.ru/storage/uploads/default.svg", "value": "Сей момент", "link": "/ecommerce/list-ecommerce/37" }, "quantity": 1, "price": "2100.00", "expired_at": "2025-03-08 08:28:02", "is_active": "Да", "creator": "-" } ], "pagination": { "total": 1, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `columns[]` — определения колонок таблицы (см. формат в [Бизнесы](/ERP/Бизнесы/#branches-table)) - `reservations[]` — резервы с полями в формате `{ icon, value, link }` для ссылающихся объектов - `pagination` — стандартный Laravel-пагинатор ### Удаление резерва ⚠ endpoint не существует на бэке **Метод:** DELETE **URL:** `https://api.gigma.ru/api/reservations/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` ⚠ **Этот endpoint описан исторически, но реально возвращает 404.** В `itecho-erp-backend` `ReservationController` имеет только метод `tableIndex` (`routes/api.php`: `Route::get('reservations', ...)`). Полного CRUD для резерваций НЕТ. **Как удалять резерв:** через позицию заказа — `DELETE /api/orders/{order}/nomenclatures/{nomenclatureId}` (это удаляет запись `Reservation`, на которой биндится `{nomenclatureId}` — см. erp-rules §18.7). #### Параметры запроса Только `id` резерва в пути URL. **Не работает.** #### Ответ `HTTP 404` — `{"message": "The route api/reservations/{id} could not be found."}` --- ## Склады Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4%D1%8B/ # Склады ### Получение списка складов **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/warehouses` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `owned_by_us` — иерархия (принадлежность) склада: свой (true), чужой (false) - `type_id[]` — массив ID типов хранимых товаров - `city_id[]` — массив ID городов - `page` — текущая страница (для пагинации) - `per_page` — кол-во элементов на странице - `query` — поисковая строка - `date_from` — "дата с..." (от даты добавления в систему) - `date_to` — "дата по..." (от даты добавления в систему) #### Пример запроса ``` https://api.gigma.ru/api/tables/warehouses?query=коледино&owned_by_us=0&storage_unit_id[]=1&city_id[]=1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ { "id": 81, "table_id": 11, "order": 0, "key": "id", "has_icon": 0, "text": "№" }, { "id": 82, "table_id": 11, "order": 1, "key": "name", "has_icon": 1, "text": "Название" }, { "id": 83, "table_id": 11, "order": 2, "key": "owner", "has_icon": 0, "text": "Принадлежность" }, { "id": 84, "table_id": 11, "order": 3, "key": "city", "has_icon": 0, "text": "Город" }, { "id": 85, "table_id": 11, "order": 4, "key": "creator", "has_icon": 1, "text": "Добавил" }, { "id": 86, "table_id": 11, "order": 5, "key": "storage_capacity", "has_icon": 0, "text": "Емкость" } ], "warehouses": [ { "id": 3, "name": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Коледино WB" }, "owner": "Чужой", "city": "Москва", "creator": { "icon": "http://localhost:8000/storage/uploads/default.svg", "value": "Полищук Артём" }, "storage_capacity": 5000000, "storage_unit": "Литр" } ], "pagination": { "total": 1, "per_page": 10, "current_page": 1, "last_page": 1, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `id` — первичный ключ (номер склада) - `name` — название склада - `owner` — принадлежность склада (свой/чужой) - `city` — город - `creator` — добавил в систему - `storage_capacity` — объем склада - `storage_unit` — единицы измерения ### Получение выбранного склада **Метод:** GET **URL:** `https://api.gigma.ru/api/warehouses/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/warehouses/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "warehouse": { "id": 1, "name": "Подольск", "avatar": null, "code": 1, "owned_by_us": false, "address": "Троицкая улица, 20, деревня Коледино, городской округ Подольск, Московская область", "storage_capacity": 5000000, "storage_unit": { "id": 1, "name": "Литр", "abbreviation": "л" }, "city": { "id": 1, "name": "Москва", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": { "id": 54, "type": { "id": 2, "name": "Поставщик", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": null, "name": "ООО \"НЕТФЛИКС\"", "registered_at": "2008-10-20", "inn": "7743277284", "kpp": null, "head": "Чуйков Андрей Николаевич", "legal_address": "г Москва, ул Адмирала Макарова, д 8 стр 1, помещ V ком 15, 15", "phone_1": "71231412412", "phone_2": "74416763277", "email": "asdaslow@gmail.com", "created_at": "2024-06-11T15:00:33.000000Z", "updated_at": "2024-06-11T19:33:38.000000Z" } } } ``` ##### Описание полей ответа - `id` — первичный ключ (номер склада) - `avatar` — объект с информацией об аватаре/фотографии склада (или `null`) - `code` — уникальный код склада - `owned_by_us` — принадлежность склада (свой/чужой) - `address` — адрес склада - `city` — объект с информацией о городе - `counterparty` — объект с информацией о контрагенте - `storage_capacity` — объем склада - `storage_unit` — объект с информацией о единицах измерения ### Добавление склада **Метод:** POST **URL:** `https://api.gigma.ru/api/warehouses` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `photo_id` — ID файла аватара/фотографии склада (в ответе возвращается как поле `avatar`) - `name` — название склада - `code` — уникальный код склада - `owned_by_us` — принадлежность склада (свой/чужой) - `address` — адрес склада - `city_id` — ID города - `storage_capacity` — объем склада (целочисленное значение) - `storage_unit_id` — ID единиц измерения - `counterparty_id` — ID поставщика #### Пример запроса ``` https://api.gigma.ru/api/warehouses ``` ```json { "photo_id": 1, "code": 1, "name": "Коледино WB", "owned_by_us": false, "address": "Троицкая улица, 20, деревня Коледино, городской округ Подольск, Московская область", "storage_capacity": 5000000, "storage_unit_id": 1, "city_id": 1, "counterparty_id": 54 } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "warehouse": { "id": 5, "name": "Подольск", "avatar": null, "code": 1, "owned_by_us": false, "address": "Троицкая улица, 20, деревня Коледино, городской округ Подольск, Московская область", "storage_capacity": 5000000, "storage_unit": { "id": 1, "name": "Литр", "abbreviation": "л" }, "city": { "id": 1, "name": "Москва", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": { "id": 54, "type": { "id": 2, "name": "Поставщик", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": null, "name": "ООО \"НЕТФЛИКС\"", "registered_at": "2008-10-20", "inn": "7743277284", "kpp": null, "head": "Чуйков Андрей Николаевич", "legal_address": "г Москва, ул Адмирала Макарова, д 8 стр 1, помещ V ком 15, 15", "phone_1": "71231412412", "phone_2": "74416763277", "email": "asdaslow@gmail.com", "created_at": "2024-06-11T15:00:33.000000Z", "updated_at": "2024-06-11T19:33:38.000000Z" } } } ``` ##### Описание полей ответа Возвращаемые поля аналогичны запросу "Получение выбранного склада". ### Редактирование склада **Метод:** PUT **URL:** `https://api.gigma.ru/api/warehouses/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `photo_id` — ID файла аватара/фотографии склада (в ответе возвращается как поле `avatar`) - `name` — название склада - `code` — уникальный код склада - `owned_by_us` — принадлежность склада (свой/чужой) - `address` — адрес склада - `city_id` — ID города - `storage_capacity` — объем склада (целочисленное значение) - `storage_unit_id` — ID единиц измерения - `counterparty_id` — ID поставщика (использовать с ID типа = 2 "Поставщик") #### Пример запроса ``` https://api.gigma.ru/api/warehouses/1 ``` ```json { "photo_id": 1, "code": 1, "name": "Коледино WB", "owned_by_us": false, "address": "Троицкая улица, 20, деревня Коледино, городской округ Подольск, Московская область", "storage_capacity": 5000000, "storage_unit_id": 1, "city_id": 1, "counterparty_id": 54 } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "warehouse": { "id": 5, "name": "Коледино WB", "avatar": null, "code": 1, "owned_by_us": false, "address": "Троицкая улица, 20, деревня Коледино, городской округ Подольск, Московская область", "storage_capacity": 5000000, "storage_unit": { "id": 1, "name": "Литр", "abbreviation": "л" }, "city": { "id": 1, "name": "Москва", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, "counterparty": { "id": 54, "type": { "id": 2, "name": "Поставщик", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "manager": { "id": 1, "first_name": "Артём", "last_name": "Полищук", "middle_name": "Николаевич", "name": "Полищук Артём" }, "avatar": null, "name": "ООО \"НЕТФЛИКС\"", "registered_at": "2008-10-20", "inn": "7743277284", "kpp": null, "head": "Чуйков Андрей Николаевич", "legal_address": "г Москва, ул Адмирала Макарова, д 8 стр 1, помещ V ком 15, 15", "phone_1": "71231412412", "phone_2": "74416763277", "email": "asdaslow@gmail.com", "created_at": "2024-06-11T15:00:33.000000Z", "updated_at": "2024-06-11T19:33:38.000000Z" } } } ``` ##### Описание полей ответа Возвращаемые поля аналогичны запросу "Получение выбранного склада". ### Удаление склада **Метод:** DELETE **URL:** `https://api.gigma.ru/api/warehouses/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/warehouses/1 ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "message": "Warehouse deleted." } ``` ##### Описание полей ответа - `message` — информационное поле ## Интеграции ### Получение списка интеграций **Метод:** GET **URL:** `https://api.gigma.ru/api/warehouses/{id}/integrations` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/warehouses/7/integrations ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "integrations": [ { "id": 1, "integration_id": 10, "name": "Wildberries", "avatar": "http://localhost:8000/storage/uploads/default.svg", "is_active": 0 }, { "id": 2, "integration_id": 11, "name": "Ozon", "avatar": "http://localhost:8000/storage/uploads/default.svg", "is_active": 0 }, { "id": 3, "integration_id": 12, "name": "Яндекс Маркет", "avatar": "http://localhost:8000/storage/uploads/default.svg", "is_active": 0 }, { "id": 4, "integration_id": 13, "name": "Купер", "avatar": "http://localhost:8000/storage/uploads/default.svg", "is_active": 0 } ], "integrationsCount": 4 } ``` ##### Описание полей ответа - `id` — первичный ключ - `integration_id` — ID интеграции - `name` — название интеграции - `avatar` — URL-адрес фотографии - `is_active` — статус (false — неактивна; true — активна) ### Обновление статуса выбранной интеграции **Метод:** PUT **URL:** `https://api.gigma.ru/api/warehouses/{id}/integrations/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `is_active` — булевый флаг, означающий текущий статус интеграции #### Пример запроса ``` https://api.gigma.ru/api/warehouses/7/integrations/1 ``` ```json { "is_active": 1 } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "integration": { "id": 1, "integration_id": 10, "name": "Wildberries", "avatar": "http://localhost:8000/storage/uploads/default.svg", "is_active": 1 } } ``` ##### Описание полей ответа Возвращаемые поля аналогичны ответу "Получение списка интеграций". ### Получение списка параметров интеграции **Метод:** GET **URL:** `https://api.gigma.ru/api/warehouses/{id}/integrations/{id}/parameters` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/warehouses/7/integrations/1/parameters ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "parameters": [ { "id": 2, "key_1": "login", "description_1": "Логин/ID", "key_2": "password", "description_2": "Пароль", "value_1": "dsfsdfdsf", "value_2": "sdfdsfsd" } ], "parametersCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `key_1` — ключ 1 - `description_1` — описание 1 - `key_2` — ключ 2 - `description_2` — описание 2 - `value_1` — значение 1 - `value_2` — значение 2 ### Добавление параметров для выбранной интеграции **Метод:** POST **URL:** `https://api.gigma.ru/api/warehouses/{id}/integrations/{id}/parameters` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `integration_parameter_id` — ID параметра интеграции - `value_1` — значение 1 - `value_2` — значение 2 #### Пример запроса ``` https://api.gigma.ru/api/warehouses/7/integrations/1/parameters ``` ```json { "integration_parameter_id": 10, "value_1": "83432434234", "value_2": "sdfdsxcvxcvfsd" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "parameter": { "id": 2, "key_1": "login", "description_1": "Логин/ID", "key_2": "password", "description_2": "Пароль", "value_1": "dsfsdfdsf", "value_2": "sdfdsfsd" } } ``` ##### Описание полей ответа Возвращаемые поля аналогичны ответу "Получение списка параметров интеграции". ### Удаление параметров из выбранной интеграции **Метод:** POST **URL:** `https://api.gigma.ru/api/warehouses/{id}/integrations/{id}/parameters/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/warehouses/7/integrations/1/parameters/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Parameter successfully deleted." } ``` ##### Описание полей ответа - `message` — информационное сообщение ### Получение истории изменений **Метод:** GET **URL:** `https://api.gigma.ru/api/warehouses/{id}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/warehouses/7/history ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "histories": [ { "id": 283, "icon": "check", "color": "primary", "title": "Создание", "description": "Создание: Полищук Артём", "datetime": "15.07.2024 05:46" }, { "id": 284, "icon": "edit", "color": "success", "title": "Редактирование", "description": "Редактирование: Полищук Артём", "datetime": "15.07.2024 07:06" } ], "historiesCount": 2 } ``` ##### Описание полей ответа - `id` — первичный ключ - `icon` — иконка - `color` — цвет - `title` — заголовок - `description` — описание - `datetime` — дата выполнения действия --- ## Справочники Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8/ # Справочники ## Экраны ### Получение списка экранов, к которым применяется проверка права на доступ **Метод:** GET **URL:** `https://api.gigma.ru/api/screens` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/screens ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "screens": [ { "id": 1, "name": "Контрагенты", "permissions": [ { "id": 9, "screen": { "id": 1, "name": "Контрагенты", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "view-counterparties", "description": "Просмотр контрагентов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 10, "screen": { "id": 1, "name": "Контрагенты", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-counterparties", "description": "Редактирование контрагентов", "created_at": "2024-03-27T07:00:46.000000Z" } ] }, { "id": 2, "name": "Заказы", "permissions": [ { "id": 13, "screen": { "id": 2, "name": "Заказы", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "view-orders", "description": "Просмотр заказов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 14, "screen": { "id": 2, "name": "Заказы", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-orders", "description": "Редактирование заказов", "created_at": "2024-03-27T07:00:46.000000Z" } ] }, { "id": 3, "name": "Задачи", "permissions": [ { "id": 15, "screen": { "id": 3, "name": "Задачи", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "view-tasks", "description": "Просмотр задач", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 16, "screen": { "id": 3, "name": "Задачи", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-tasks", "description": "Редактирование задач", "created_at": "2024-03-27T07:00:46.000000Z" } ] } ], "screensCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название экрана - `permissions` — массив объектов, содержащих права доступа пользователя ### Получение выбранного экрана со списком прав доступа **Метод:** GET **URL:** `https://api.gigma.ru/api/screens/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/screens/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "screen": { "id": 1, "name": "Контрагенты", "permissions": [ { "id": 9, "screen": { "id": 1, "name": "Контрагенты", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "view-counterparties", "description": "Просмотр контрагентов", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 10, "screen": { "id": 1, "name": "Контрагенты", "created_at": "2024-03-27T07:00:46.000000Z" }, "name": "edit-counterparties", "description": "Редактирование контрагентов", "created_at": "2024-03-27T07:00:46.000000Z" } ] } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название экрана - `permissions` — массив объектов, содержащих права доступа пользователя ## Типы контрагентов ### Получение списка с типами контрагентов **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/counterparty_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "counterpartyTypes": [ { "id": 1, "name": "Клиент", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 2, "name": "Поставщик", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 3, "name": "Агент", "created_at": "2024-03-27T07:00:46.000000Z" } ], "counterpartyTypesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип контрагента - `created_at` — дата и время добавления в систему ### Получение выбранного типа контрагента **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty_types/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/counterparty_types/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "counterpartyType": { "id": 1, "name": "Клиент", "created_at": "2024-03-27T07:00:46.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип контрагента - `created_at` — дата и время добавления в систему ## Отделы ### Получение списка отделов **Метод:** GET **URL:** `https://api.gigma.ru/api/departments` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/departments ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "departments": [ { "id": 1, "name": "Технический", "created_at": "2023-11-13T13:20:36.000000Z" }, { "id": 2, "name": "Коммерческий", "created_at": "2023-11-13T13:20:36.000000Z" }, { "id": 3, "name": "Конструкторский", "created_at": "2023-11-13T13:20:36.000000Z" }, { "id": 4, "name": "СМО", "created_at": "2023-11-13T13:20:36.000000Z" }, { "id": 5, "name": "Логистика/склад", "created_at": "2023-11-13T13:20:36.000000Z" } ], "departmentsCount": 5 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название отдела - `created_at` — дата и время добавления в систему ### Получение выбранного отдела **Метод:** GET **URL:** `https://api.gigma.ru/api/departments/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/departments/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "department": { "id": 1, "name": "Технический", "created_at": "2023-11-13T13:20:36.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название отдела - `created_at` — дата и время добавления в систему ### Добавление отдела **Метод:** POST **URL:** `https://api.gigma.ru/api/departments` **Авторизация:** Bearer token (permission: edit-departments) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` — название отдела #### Пример запроса ``` https://api.gigma.ru/api/departments ``` ```json { "name": "IT" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "department": { "id": 6, "name": "IT", "created_at": "2023-11-13T13:22:07.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название отдела - `created_at` — дата и время добавления в систему ### Редактирование отдела **Метод:** PUT **URL:** `https://api.gigma.ru/api/departments/{id}` **Авторизация:** Bearer token (permission: edit-departments) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` — название отдела #### Пример запроса ``` https://api.gigma.ru/api/departments/1 ``` ```json { "name": "IT" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "department": { "id": 6, "name": "IT", "created_at": "2023-11-13T13:22:07.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название отдела - `created_at` — дата и время добавления в систему ### Удаление выбранного отдела **Метод:** DELETE **URL:** `https://api.gigma.ru/api/departments/{id}` **Авторизация:** Bearer token (permission: edit-departments) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/departments/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Department successfully destroyed" } ``` ##### Описание полей ответа - `message` — информационное поле ## Роли пользователей ### Получение списка ролей пользователей **Метод:** GET **URL:** `https://api.gigma.ru/api/roles` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/roles ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "roles": [ { "id": 1, "name": "owner", "description": "Собственник", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 2, "name": "admin", "description": "Администратор", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 3, "name": "manager", "description": "Руководитель отдела", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 4, "name": "employee", "description": "Сотрудник", "created_at": "2024-03-27T07:00:46.000000Z" } ], "rolesCount": 4 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение роли - `description` — описание роли (на русском языке) - `created_at` — дата и время добавления ### Получение выбранной роли пользователя **Метод:** GET **URL:** `https://api.gigma.ru/api/roles/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/roles/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "role": { "id": 1, "name": "owner", "description": "Собственник", "created_at": "2024-03-27T07:00:46.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение роли - `description` — описание роли (на русском языке) - `created_at` — дата и время добавления ### Добавление роли пользователя **Метод:** POST **URL:** `https://api.gigma.ru/api/roles` **Авторизация:** Bearer token (permission: edit-roles) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` — код роли - `description` — описание роли (на русском языке) #### Пример запроса ``` https://api.gigma.ru/api/roles ``` ```json { "name": "accountant", "description": "Бухгалтер" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "role": { "id": 4, "name": "accountant", "description": "Бухгалтер", "created_at": "2023-11-13T13:24:23.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение роли - `description` — описание роли (на русском языке) - `created_at` — дата и время добавления ### Редактирование роли пользователя **Метод:** PUT **URL:** `https://api.gigma.ru/api/roles/{id}` **Авторизация:** Bearer token (permission: edit-roles) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` — код роли - `description` — описание роли (на русском языке) #### Пример запроса ``` https://api.gigma.ru/api/roles/1 ``` ```json { "name": "accountant", "description": "Бухгалтер" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "role": { "id": 4, "name": "accountant", "description": "Бухгалтер", "created_at": "2023-11-13T13:24:23.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение роли - `description` — описание роли (на русском языке) - `created_at` — дата и время добавления ### Удаление выбранной роли пользователя **Метод:** DELETE **URL:** `https://api.gigma.ru/api/roles/{id}` **Авторизация:** Bearer token (permission: edit-roles) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/roles/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Role successfully deleted" } ``` ##### Описание полей ответа - `message` — информационное поле ## Типы файлов ### Получение списка типов файлов **Метод:** GET **URL:** `https://api.gigma.ru/api/file_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/file_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "fileTypes": [ { "id": 1, "name": "Трудовой договор", "created_at": "2023-11-23T11:50:48.000000Z" }, { "id": 2, "name": "Аватар", "created_at": "2023-11-23T11:50:48.000000Z" }, { "id": 3, "name": "Документ к заказу", "created_at": "2024-01-12T11:55:55.000000Z" } ], "fileTypesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип файла - `created_at` — дата и время добавления ### Получение выбранного типа файла **Метод:** GET **URL:** `https://api.gigma.ru/api/file_types/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/file_types/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "fileType": { "id": 1, "name": "Трудовой договор", "created_at": "2023-11-17T06:22:25.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип файла - `created_at` — дата и время добавления ## Права доступа ### Получение списка прав доступа **Метод:** GET **URL:** `https://api.gigma.ru/api/permissions` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/permissions ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "permissions": [ { "id": 1, "screen": null, "name": "view-admins", "description": "Просмотр администраторов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 2, "screen": null, "name": "edit-admins", "description": "Редактирование администраторов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 3, "screen": null, "name": "view-users", "description": "Просмотр пользователей", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 4, "screen": null, "name": "edit-users", "description": "Редактирование пользователей", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 5, "screen": null, "name": "edit-roles", "description": "Редактирование ролей", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 6, "screen": null, "name": "edit-permissions", "description": "Редактирование прав доступа", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 7, "screen": null, "name": "edit-branches", "description": "Редактирование филиалов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 8, "screen": null, "name": "edit-departments", "description": "Редактирование отделов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 9, "screen": { "id": 1, "name": "контрагенты", "created_at": null }, "name": "view-counterparties", "description": "Просмотр контрагентов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 10, "screen": { "id": 1, "name": "контрагенты", "created_at": null }, "name": "edit-counterparties", "description": "Редактирование контрагентов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 11, "screen": null, "name": "view-communications", "description": "Просмотр коммуникаций", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 12, "screen": null, "name": "edit-communications", "description": "Редактирование коммуникаций", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 13, "screen": { "id": 2, "name": "Заказы", "created_at": null }, "name": "view-orders", "description": "Просмотр заказов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 14, "screen": { "id": 2, "name": "Заказы", "created_at": null }, "name": "edit-orders", "description": "Редактирование заказов", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 15, "screen": { "id": 3, "name": "Задачи", "created_at": null }, "name": "view-tasks", "description": "Просмотр задач", "created_at": "2023-11-16T09:07:19.000000Z" }, { "id": 16, "screen": { "id": 3, "name": "Задачи", "created_at": null }, "name": "edit-tasks", "description": "Редактирование задач", "created_at": "2023-11-16T09:07:19.000000Z" } ], "permissionsCount": 16 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение права доступа - `description` — описание права доступа (на русском языке) - `created_at` — дата и время добавления ### Получение выбранного права доступа **Метод:** GET **URL:** `https://api.gigma.ru/api/permissions/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/permissions/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "permission": { "id": 1, "name": "edit-roles", "description": "Редактирование ролей", "created_at": "2023-11-13T13:20:36.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение права доступа - `description` — описание права доступа (на русском языке) - `created_at` — дата и время добавления ### Добавление права доступа **Метод:** POST **URL:** `https://api.gigma.ru/api/permissions` **Авторизация:** Bearer token (permission: edit-permissions) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` — значение права доступа - `description` — описание роли (на русском языке) #### Пример запроса ``` https://api.gigma.ru/api/permissions ``` ```json { "name": "edit-admins", "description": "Редактирование списка администраторов" } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "permission": { "id": 13, "name": "edit-admins", "description": "Редактирование списка администраторов", "created_at": "2023-11-13T13:31:38.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение права доступа - `description` — описание роли (на русском языке) - `created_at` — дата и время добавления ### Редактирование права доступа **Метод:** PUT **URL:** `https://api.gigma.ru/api/permissions/{id}` **Авторизация:** Bearer token (permission: edit-permissions) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` — значение права доступа - `description` — описание роли (на русском языке) #### Пример запроса ``` https://api.gigma.ru/api/permissions/1 ``` ```json { "name": "edit-admins", "description": "Редактирование списка администраторов" } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "permission": { "id": 13, "name": "edit-admins", "description": "Редактирование списка администраторов", "created_at": "2023-11-13T13:31:38.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — значение права доступа - `description` — описание роли (на русском языке) - `created_at` — дата и время добавления ### Удаление выбранного права доступа **Метод:** DELETE **URL:** `https://api.gigma.ru/api/permissions/{id}` **Авторизация:** Bearer token (permission: edit-permissions) **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/permissions/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Permission successfully deleted" } ``` ##### Описание полей ответа - `message` — информационное поле ## Статусы звонков ### Получение списка статусов звонков **Метод:** GET **URL:** `https://api.gigma.ru/api/call_statuses` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/call_statuses ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "callStatuses": [ { "id": 1, "name": "Создан", "created_at": "2023-12-27T22:53:33.000000Z" }, { "id": 2, "name": "Обработан", "created_at": "2023-12-27T22:53:33.000000Z" }, { "id": 3, "name": "Пропущен", "created_at": "2023-12-27T22:53:33.000000Z" } ], "callStatusesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — статус звонка - `created_at` — дата и время добавления ### Получение выбранного статуса звонка **Метод:** GET **URL:** `https://api.gigma.ru/api/call_statuses/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/call_statuses/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "callStatus": { "id": 1, "name": "Создан", "created_at": "2023-12-27T22:53:33.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — статус звонка - `created_at` — дата и время добавления ## Статусы заказов ### Получение списка статусов заказов **Метод:** GET **URL:** `https://api.gigma.ru/api/order_statuses` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/order_statuses ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "orderStatuses": [ { "id": 1, "name": "Новый", "created_at": "2024-01-08T05:21:59.000000Z" }, { "id": 2, "name": "Ожидание оплаты", "created_at": "2024-01-08T05:21:59.000000Z" }, { "id": 3, "name": "В сборке", "created_at": "2024-01-08T05:21:59.000000Z" }, { "id": 4, "name": "Можно забирать", "created_at": "2024-01-08T05:21:59.000000Z" }, { "id": 5, "name": "Выдан", "created_at": "2024-01-08T05:21:59.000000Z" }, { "id": 6, "name": "Отменён", "created_at": "2024-01-08T05:21:59.000000Z" }, { "id": 22, "name": "Оплачен", "created_at": "2024-01-08T05:21:59.000000Z" }, { "id": 23, "name": "Доставка", "created_at": "2024-01-08T05:21:59.000000Z" } ], "orderStatusesCount": 8 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — статус заказа - `created_at` — дата и время добавления ### Получение выбранного статуса заказа **Метод:** GET **URL:** `https://api.gigma.ru/api/order_statuses/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/order_statuses/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "orderStatus": { "id": 1, "name": "Новый", "created_at": "2024-01-08T05:21:59.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — статус заказа - `created_at` — дата и время добавления ## Статусы задач ### Получение списка статусов задач **Метод:** GET **URL:** `https://api.gigma.ru/api/task_statuses` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/task_statuses ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "taskStatuses": [ { "id": 1, "name": "В работе", "created_at": "2024-01-22T21:52:32.000000Z" }, { "id": 2, "name": "Просрочена", "created_at": "2024-01-22T21:52:32.000000Z" }, { "id": 3, "name": "Выполнена", "created_at": "2024-01-22T21:52:32.000000Z" } ], "taskStatusesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — статус задачи - `created_at` — дата и время добавления ### Получение выбранного статуса задачи **Метод:** GET **URL:** `https://api.gigma.ru/api/task_statuses/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/task_statuses/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "taskStatus": { "id": 1, "name": "В работе", "created_at": "2024-01-22T21:52:32.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — статус задачи - `created_at` — дата и время добавления ## Города ### Получение списка городов **Метод:** GET **URL:** `https://api.gigma.ru/api/cities` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/cities?query=Москва ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "cities": [ { "id": 1, "name": "Москва", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, { "id": 2, "name": "Новосибирск", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" }, { "id": 3, "name": "Ростов-на-Дону", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" } ], "citiesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — город - `created_at` — дата и время добавления ### Получение выбранного города **Метод:** GET **URL:** `https://api.gigma.ru/api/cities/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/cities/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "city": { "id": 1, "name": "Москва", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-19T09:18:41.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — город - `created_at` — дата и время добавления ## Страны ### Получение списка стран **Метод:** GET **URL:** `https://api.gigma.ru/api/countries` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/countries ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "countries": [ { "id": 1, "name": "Россия", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-04-10T06:59:28.000000Z" } ], "countriesCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — страна - `avatar` — URL-адрес фотографии - `created_at` — дата и время добавления ## Единицы измерения ### Получение списка единиц измерения **Метод:** GET **URL:** `https://api.gigma.ru/storage_units` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/storage_units ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "units": [ { "id": 1, "name": "Литр", "abbreviation": "л" }, { "id": 2, "name": "Кубический метр", "abbreviation": "м³" }, { "id": 3, "name": "Галлон", "abbreviation": "гал" }, { "id": 4, "name": "Пинта", "abbreviation": "пт" }, { "id": 5, "name": "Кварта", "abbreviation": "кв" }, { "id": 6, "name": "Баррель", "abbreviation": "б" }, { "id": 7, "name": "Кубический дюйм", "abbreviation": "in³" }, { "id": 8, "name": "Кубический фут", "abbreviation": "ft³" }, { "id": 9, "name": "Миллилитр", "abbreviation": "мл" }, { "id": 10, "name": "Цистерна", "abbreviation": "цист" } ], "unitsCount": 10 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — полное название - `abbreviation` — аббревиатура ### Получение выбранной единицы измерения **Метод:** GET **URL:** `https://api.gigma.ru/storage_units/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/storage_units/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "unit": { "id": 1, "name": "Литр", "abbreviation": "л" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — полное название - `abbreviation` — аббревиатура ## Торговые марки (бренды) ### Получение списка брендов **Метод:** GET **URL:** `https://api.gigma.ru/api/brands` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/brands ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "brands": [ { "id": 45, "name": "COCODOR", "avatar": "http://localhost:8000/storage/uploads/8M3PQIpdd3n4cQqM7cXUBILlMMTpZPyv8DdRYmAV.webp", "branch": { "id": 37, "title": "Торговля косметикой" }, "created_at": "2024-12-11T12:28:57.000000Z" } ], "brandsCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — производитель - `avatar` — URL фотографии производителя - `branch` — объект с информацией о направлении бизнеса - `created_at` — дата и время добавления ### Получение выбранного бренда **Метод:** GET **URL:** `https://api.gigma.ru/api/brands/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Передаваемые параметры отсутствуют. #### Пример запроса ``` https://api.gigma.ru/api/brands/45 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "brand": { "id": 45, "name": "COCODOR", "avatar": "http://localhost:8000/storage/uploads/8M3PQIpdd3n4cQqM7cXUBILlMMTpZPyv8DdRYmAV.webp", "branch": { "id": 37, "title": "Торговля косметикой" }, "created_at": "2024-12-11T12:28:57.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — производитель - `avatar` — URL фотографии производителя - `branch` — объект с информацией о направлении бизнеса - `created_at` — дата и время добавления ### Добавление бренда **Метод:** POST **URL:** `https://api.gigma.ru/api/brands` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` [обязательно] — название торговой марки - `avatar_id` — ID фотографии торговой марки - `branch_id` — ID бизнеса #### Пример запроса ``` https://api.gigma.ru/api/brands ``` ```json { "name": "TEST", "avatar_id": 1, "branch_id": 15 } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "brand": { "id": 44, "name": "TEST", "avatar": "http://localhost:8000/storage/uploads/default.svg", "branch": { "id": 15, "title": "Торговля косметикой" }, "created_at": "2024-12-10T15:45:05.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — производитель - `avatar` — URL фотографии производителя - `branch` — объект с информацией о направлении бизнеса - `created_at` — дата и время добавления ### Обновление бренда **Метод:** PUT **URL:** `https://api.gigma.ru/api/brands/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `name` [обязательно] — название торговой марки - `avatar_id` — ID фотографии торговой марки - `branch_id` — ID бизнеса #### Пример запроса ``` https://api.gigma.ru/api/brands/44 ``` ```json { "name": "TEST", "avatar_id": 1, "branch_id": 14 } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "brand": { "id": 44, "name": "TEST", "avatar": "http://localhost:8000/storage/uploads/default.svg", "branch": { "id": 14, "title": "Торговля одеждой" }, "created_at": "2024-12-10T15:45:05.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — производитель - `avatar` — URL фотографии производителя - `branch` — объект с информацией о направлении бизнеса - `created_at` — дата и время добавления ## Способы доставки ### Получение списка способов доставки **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/delivery_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/counterparty/delivery_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "deliveryTypes": [ { "id": 1, "name": "Самовывоз", "price": "0.00", "is_active": 1, "created_at": "2024-05-13T05:26:37.000000Z" }, { "id": 2, "name": "Доставка транспортной компанией СДЭК", "price": "300.00", "is_active": 1, "created_at": "2024-05-13T05:26:37.000000Z" }, { "id": 7, "name": "Доставка другой компанией", "price": "0.00", "is_active": 1, "created_at": "2024-05-13T05:26:37.000000Z" } ], "deliveryTypesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название способа доставки - `price` — стоимость доставки (цена от) - `is_active` — флаг доступности способа доставки для оформления - `created_at` — дата и время добавления ## Магазины ### Получение списка магазинов (пунктов выдачи) **Метод:** GET **URL:** `https://api.gigma.ru/api/counterparty/shops` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/counterparty/shops ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "shops": [ { "id": 1, "photo": null, "name": "Центральный", "address": "г. Донецк, ул. Ленина, 1", "phone": "+79851234567", "schedule": "ПН-ПТ, с 10:00 до 18:00" }, { "id": 2, "photo": null, "name": "Новосибирский", "address": "г. Новосибирск, ул. Красный проспект, 65", "phone": "+79851234567", "schedule": "Ежедневно, с 10:00 до 18:00" }, { "id": 3, "photo": null, "name": "Столичный", "address": "г. Москва, ул. Красная Площадь, 1", "phone": "+79851234567", "schedule": "Ежедневно, круглосуточно" } ], "shopsCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `photo` — строка, содержащая ссылку на URL фотографии магазина - `address` — адрес магазина - `phone` — контактный номер телефона - `schedule` — график работы магазина ## Объекты ### Получение списка объектов **Метод:** GET **URL:** `https://api.gigma.ru/api/objects` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/objects ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "objects": [ { "id": 1, "name": "Wildberries", "avatar": "http://localhost:8000/storage/uploads/ypPdC9qVA2MZLbQ0l9nfS5LRlcMAVPiTBZhV31UY.svg", "created_at": "2024-07-27T18:15:28.000000Z" } ], "objectsCount": 1 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название объекта - `avatar` — URL на фотографию - `created_at` — дата/время добавления в систему ## Каналы продаж ### Получение списка каналов продаж **Метод:** GET **URL:** `https://api.gigma.ru/api/sales_channels` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `query` — поисковая строка #### Пример запроса ``` https://api.gigma.ru/api/sales_channels ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "salesChannels": [ { "id": 1, "name": "Авито", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 2, "name": "Яндекс директ", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 3, "name": "Вк реклама", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 4, "name": "Другое", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" } ], "salesChannelsCount": 4 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название канала продаж - `avatar` — URL фотографии - `created_at` — дата и время добавления ## НДС ### Получение списка НДС **Метод:** GET **URL:** `https://api.gigma.ru/api/vats` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/vats ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "vats": [ { "id": 1, "name": "Без НДС", "value": "0.00" }, { "id": 2, "name": "НДС 10%", "value": "10.00" }, { "id": 5, "name": "НДС 22%", "value": "22.00" }, { "id": 6, "name": "НДС 20%", "value": "20.00" } ], "vatsCount": 4 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название значения НДС - `value` — значение НДС в процентах ### Получение выбранного значения НДС **Метод:** GET **URL:** `https://api.gigma.ru/api/vats/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/vats/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "vat": { "id": 1, "name": "Без НДС", "value": "0.00" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — название значения НДС - `value` — значение НДС в процентах ## Типы страниц ### Получение списка типов страниц **Метод:** GET **URL:** `https://api.gigma.ru/api/page_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/page_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "pageTypes": [ { "id": 1, "name": "Главная" }, { "id": 2, "name": "Категория" }, { "id": 3, "name": "Товар" } ], "pageTypesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип страницы ### Получение выбранного типа страницы **Метод:** GET **URL:** `https://api.gigma.ru/api/page_types/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/page_types/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "pageType": { "id": 1, "name": "Главная" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип страницы ## Типы интеграций ### Получение списка типов интеграций **Метод:** GET **URL:** `https://api.gigma.ru/api/integration_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с массивом `integrationTypes` и `integrationTypesCount`. ### Получение выбранного типа интеграции **Метод:** GET **URL:** `https://api.gigma.ru/api/integration_types/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ## Интеграции ### Получение списка интеграций **Метод:** GET **URL:** `https://api.gigma.ru/api/integrations` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с массивом `integrations` и `integrationsCount`. ### Получение выбранной интеграции **Метод:** GET **URL:** `https://api.gigma.ru/api/integrations/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ## Настройки ### Получение настроек **Метод:** GET **URL:** `https://api.gigma.ru/api/settings` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с массивом `settings`. ### Получение выбранной настройки **Метод:** GET **URL:** `https://api.gigma.ru/api/settings/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200`. ## Типы доставки ### Получение списка типов доставки **Метод:** GET **URL:** `https://api.gigma.ru/api/delivery_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с массивом `deliveryTypes` и `deliveryTypesCount`. ## Типы блоков ### Получение списка типов блоков **Метод:** GET **URL:** `https://api.gigma.ru/api/block_types` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/block_types ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "blockTypes": [ { "id": 1, "name": "Слайдер" }, { "id": 2, "name": "Текст" }, { "id": 3, "name": "Сетка товаров" } ], "blockTypesCount": 3 } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип блока ### Получение выбранного типа блока **Метод:** GET **URL:** `https://api.gigma.ru/api/block_types/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/block_types/1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "blockType": { "id": 1, "name": "Слайдер" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — тип блока --- ## Страницы Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B/ # Страницы (контент) ### Получение списка страниц (табличное представление) **Метод:** GET **URL:** `https://api.gigma.ru/api/tables/pages` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `application_id` [required] — ID приложения - `page_type_id` [nullable] — ID типа страницы - `order_by` [nullable] — сортировка: `date_asc`, `date_desc`, `popularity_asc`, `popularity_desc` - `query` [nullable] — поисковая строка - `page` [nullable] — номер страницы для пагинации - `per_page` [nullable] — элементов на странице #### Пример запроса ``` https://api.gigma.ru/api/tables/pages?query=новость&application_id=23&page_type_id=1 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "columns": [ {"id": 135, "table_id": 17, "order": 0, "key": "code", "has_icon": 0, "text": "Код"}, {"id": 136, "table_id": 17, "order": 1, "key": "date", "has_icon": 0, "text": "Дата"}, {"id": 137, "table_id": 17, "order": 2, "key": "title", "has_icon": 1, "text": "Название"}, {"id": 138, "table_id": 17, "order": 3, "key": "type", "has_icon": 1, "text": "Тип контента"}, {"id": 139, "table_id": 17, "order": 4, "key": "slug", "has_icon": 0, "text": "Slug"}, {"id": 140, "table_id": 17, "order": 5, "key": "creator", "has_icon": 1, "text": "Создал"}, {"id": 141, "table_id": 17, "order": 6, "key": "status", "has_icon": 0, "text": "Статус"} ], "contents": [ { "id": 12, "code": null, "date": "13.05.2024", "title": {"icon": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "value": "Создание идивидуальго проекта"}, "type": {"icon": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "value": "Страница"}, "slug": "proektnye-raboty", "creator": {"icon": "https://beta.back.erp.itecho.ru/storage/uploads/hJsFVET0jAcRiqK3Zu2mdkFVFL4LktdrT6kB7la8.jpg", "value": "Иванов Василий", "link": "https://beta.gigma.ru/users/list-users/39"}, "status": "Черновик" } ], "pagination": { "total": 9, "per_page": 1, "current_page": 1, "last_page": 9, "from": 1, "to": 1 } } ``` ##### Описание полей ответа - `columns` — массив столбцов таблицы - `contents` — массив данных страниц (в табличном формате) - `pagination` — информация для пагинации - `id` — ID страницы - `code` — код страницы - `date` — дата создания (только в табличном представлении) - `title` — название с иконкой - `type` — тип страницы с иконкой - `slug` — идентификатор URL - `creator` — создатель с ссылкой - `status` — статус публикации (только в табличном представлении; в ресурсе `GET /api/pages/{id}` этого поля нет) ### Получение выбранной страницы (контента) **Метод:** GET **URL:** `https://api.gigma.ru/api/pages/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/pages/12 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "page": { "id": 12, "code": null, "avatar": null, "is_page": true, "views_count": 27, "type": { "id": 1, "name": "Страница", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-10-31T11:14:22.000000Z" }, "creator": { "id": 39, "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/hJsFVET0jAcRiqK3Zu2mdkFVFL4LktdrT6kB7la8.jpg", "first_name": "Василий", "last_name": "Иванов", "middle_name": "Батькович", "name": "Иванов Василий" }, "slug": "proektnye-raboty", "title": "Создание идивидуальго проекта", "meta_title": null, "preview": { "id": 2066, "name": "image1.png", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/iT6Bvuu2DQrFIAF9SMkqnVtyh8uXvECkpIt4OkgR.png", "link": null, "created_at": "2024-11-13T09:51:36.000000Z", "updated_at": "2024-11-13T09:51:36.000000Z" }, "description": "Создание идивидуальго проекта", "meta_description": null, "content": "

В нашем интернет-магазине вы можете недорого купить скрабы для очищения и отшелушивания кожи. У нас представлена корейская косметика самых известных брендов, с подробным описанием, составами и отзывами покупателей. Мы предлагаем вам отшелушивающие скрабы по выгодной цене с доставкой по всей России, как в пункты выдачи заказов, так и по вашему персональному адресу. Возможен наложенный платеж.

", "application": { "id": 23, "name": "https://nsksm.ru", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-10-08T08:46:23.000000Z" }, "created_at": "2024-05-13T05:29:39.000000Z" } } ``` ##### Описание полей ответа - `id` — ID страницы - `code` — код страницы - `avatar` — аватар страницы - `is_page` — флаг (true=страница, false=блок) - `views_count` — кол-во просмотров - `type` — информация о типе - `creator` — данные создателя - `slug` — URL-идентификатор - `title` — название - `meta_title` — meta-заголовок - `preview` — превью-изображение - `description` — описание - `meta_description` — meta-описание - `content` — контент в формате HTML - `application` — привязанное приложение - `created_at` — дата создания ### Добавление страницы **Метод:** POST **URL:** `https://api.gigma.ru/api/pages` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `code` [nullable, unique] — код страницы - `application_id` [required] — ID приложения - `avatar_id` [nullable] — ID аватара - `is_page` [required] — флаг типа (true/false) - `page_type_id` [required] — ID типа страницы - `slug` [required, unique] — slug - `title` [required, min:3, max:255] — название - `meta_title` [nullable, min:3, max:255] — meta-заголовок - `preview_id` [nullable] — ID превью - `description` [nullable] — описание - `meta_description` [nullable] — meta-описание - `content` [nullable] — HTML-контент - `tags` [array, nullable] — массив ID тегов #### Пример запроса ``` https://api.gigma.ru/api/pages ``` ```json { "code": "1235", "application_id": 23, "avatar_id": 1, "is_page": true, "page_type_id": 1, "slug": "news-3", "title": "Скоро запуск веб-сайта!", "meta_title": "Запуск веб-сайта на платформе gigma.ru", "preview_id": 1, "description": "Описание текстовом формате", "meta_description": "Meta описание", "content": "HTML content", "tags": [1, 2] } ``` #### Ответ При успешном действии возвращается HTTP код `201`. ```json { "page": { "id": 36, "code": "1235", "avatar": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "link": null, "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "is_page": true, "views_count": null, "type": { "id": 1, "name": "Страница", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-10-31T11:14:22.000000Z" }, "creator": { "id": 39, "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/hJsFVET0jAcRiqK3Zu2mdkFVFL4LktdrT6kB7la8.jpg", "first_name": "Василий", "last_name": "Иванов", "middle_name": "Батькович", "name": "Иванов Василий" }, "slug": "news-3", "title": "Скоро запуск веб-сайта!", "meta_title": "Запуск веб-сайта на платформе gigma.ru", "preview": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "link": null, "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "description": "Описание текстовом формате", "meta_description": "Meta описание", "content": "HTML content", "application": { "id": 23, "name": "https://nsksm.ru", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-10-08T08:46:23.000000Z" }, "tags": [ { "id": 1, "name": "Важное", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-11-14T14:01:51.000000Z" }, { "id": 2, "name": "Продукция", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-11-14T14:01:51.000000Z" } ], "created_at": "2024-11-27T09:34:29.000000Z" } } ``` ##### Описание полей ответа Поля соответствуют запросу получения выбранной страницы. ### Редактирование страницы (контента) **Метод:** PUT **URL:** `https://api.gigma.ru/api/pages/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса - `code` [nullable, unique] — код страницы - `application_id` [required] — ID приложения - `avatar_id` [nullable] — ID аватара - `is_page` [required] — флаг (true/false) - `page_type_id` [required] — ID типа страницы - `slug` [required, unique] — slug - `title` [required, min:3, max:255] — название - `meta_title` [nullable, min:3, max:255] — meta-заголовок - `preview_id` [nullable] — ID превью - `description` [nullable] — описание - `meta_description` [nullable] — meta-описание - `content` [nullable] — HTML-контент - `tags` [array, nullable] — массив ID тегов #### Пример запроса ``` https://api.gigma.ru/api/pages/36 ``` ```json { "code": "1235", "application_id": 23, "avatar_id": 1, "is_page": true, "page_type_id": 1, "slug": "news-3", "title": "Скоро запуск веб-сайта!", "meta_title": "Запуск веб-сайта на платформе gigma.ru", "preview_id": 1, "description": "Описание текстовом формате", "meta_description": "Meta описание", "content": "HTML content", "tags": [1] } ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "page": { "id": 36, "code": "1235", "avatar": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "link": null, "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "is_page": true, "views_count": 0, "type": { "id": 1, "name": "Страница", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-10-31T11:14:22.000000Z" }, "creator": { "id": 39, "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/hJsFVET0jAcRiqK3Zu2mdkFVFL4LktdrT6kB7la8.jpg", "first_name": "Василий", "last_name": "Иванов", "middle_name": "Батькович", "name": "Иванов Василий" }, "slug": "news-3", "title": "Скоро запуск веб-сайта!", "meta_title": "Запуск веб-сайта на платформе gigma.ru", "preview": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://beta.back.erp.itecho.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "link": null, "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" }, "description": "Описание текстовом формате", "meta_description": "Meta описание", "content": "HTML content", "application": { "id": 23, "name": "https://nsksm.ru", "avatar": "https://beta.back.erp.itecho.ru/storage/uploads/default.svg", "created_at": "2024-10-08T08:46:23.000000Z" }, "tags": [ { "id": 1, "name": "Важное", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-11-14T14:01:51.000000Z" } ], "created_at": "2024-11-27T09:34:29.000000Z" } } ``` ##### Описание полей ответа Поля соответствуют запросу получения выбранной страницы. ### Удаление страницы (контента) **Метод:** DELETE **URL:** `https://api.gigma.ru/api/pages/{id}` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/pages/41 ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "message": "Page successfully destroyed" } ``` ##### Описание полей ответа - `message` — информационное сообщение о результате операции ### Получение истории изменений страницы **Метод:** GET **URL:** `https://api.gigma.ru/api/pages/{page}/history` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Ответ При успешном действии возвращается HTTP код `200` с записями истории: `id`, `icon`, `color`, `title`, `description`, `datetime`. ### Получение списка тегов **Метод:** GET **URL:** `https://api.gigma.ru/api/page_tags` **Авторизация:** Bearer token **Headers:** `Authorization: Bearer {token}` #### Параметры запроса Параметры не передаются. #### Пример запроса ``` https://api.gigma.ru/api/page_tags ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "pageTags": [ { "id": 1, "name": "Важное", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-11-14T14:01:51.000000Z" }, { "id": 2, "name": "Продукция", "avatar": "http://localhost:8000/storage/uploads/default.svg", "created_at": "2024-11-14T14:01:51.000000Z" } ], "pageTagsCount": 2 } ``` ##### Описание полей ответа - `id` — первичный ключ тега - `name` — название тега - `avatar` — URL аватара - `created_at` — дата добавления в систему - `pageTagsCount` — общее количество тегов --- ## Стратегии продаж Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%D0%B4%D0%B0%D0%B6/ # Стратегии продаж Стратегия продаж — справочник вариантов реализации товара (например «Продать остатки», «Новинки»). Используется как фильтр и атрибут в карточках. ### Список стратегий продаж **Метод:** GET **URL:** `https://api.gigma.ru/api/sales_strategies` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "salesStrategies": [ { "id": 1, "name": "Продать остатки", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-06-20T10:01:33.000000Z" } ], "salesStrategiesCount": 1 } ``` ##### Описание полей ответа - `salesStrategies[]` — массив стратегий: `id`, `name`, `avatar`, `created_at` - `salesStrategiesCount` — общее количество ### Стратегия продаж по ID **Метод:** GET **URL:** `https://api.gigma.ru/api/sales_strategies/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Параметры запроса Только `id` стратегии в пути URL. #### Ответ ```json { "salesStrategy": { "id": 1, "name": "Продать остатки", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-06-20T10:01:33.000000Z" } } ``` --- ## Файлы Source: https://artypoul-docs-gigma-7b80.twc1.net/ERP/%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B/ # Файлы Файлы загружаются как `multipart/form-data` через `POST /api/files`. Каждый файл привязан к типу из справочника `file_types` (трудовой договор, аватар, и т.п.). ## Файлы ### Загрузка файла **Метод:** POST **URL:** `https://api.gigma.ru/api/files` **Авторизация:** Bearer token **Headers:** `Content-Type: multipart/form-data; Accept: application/json` #### Параметры запроса (form-data) - `file` — содержимое файла (обязательно) - `file_type_id` — ID типа файла из `/api/file_types` (обязательно) - `link` — произвольная URL ссылка (опционально, например на видео) #### Пример запроса ``` POST https://api.gigma.ru/api/files Content-Type: multipart/form-data file: file_type_id: 1 link: https://google.ru ``` #### Ответ При успешном действии возвращается HTTP код `200`. ```json { "file": { "id": 2201, "name": "downloader.py", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/7NYkKhv2Tm9CGlpcDzzLcsrKtrce8K39M4uU9pDw", "link": "https://google.ru", "created_at": "2024-12-03T10:42:18.000000Z", "updated_at": "2024-12-03T10:42:18.000000Z" } } ``` ##### Описание полей ответа - `id` — первичный ключ - `name` — имя загруженного файла - `type` — объект типа файла - `path` — публичный URL файла - `link` — произвольная URL ссылка (если передана) - `created_at`, `updated_at` — таймстампы ### Получение файла по ID **Метод:** GET **URL:** `https://api.gigma.ru/api/files/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Пример запроса ``` GET https://api.gigma.ru/api/files/1 ``` #### Ответ ```json { "file": { "id": 1, "name": "logo.svg", "type": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, "path": "https://api.gigma.ru/storage/uploads/yjohncMkjTSnvJ7FH4vksOtDYUy9pO2HDwmNU5Hc.svg", "created_at": "2024-04-14T20:04:32.000000Z", "updated_at": "2024-04-14T20:04:32.000000Z" } } ``` ### Удаление файла **Метод:** DELETE **URL:** `https://api.gigma.ru/api/files/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "message": "File successfully deleted" } ``` ## Типы файлов (справочник) ### Список типов файлов **Метод:** GET **URL:** `https://api.gigma.ru/api/file_types` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` Используется при загрузке файла, чтобы выбрать `file_type_id`. #### Ответ ```json { "fileTypes": [ { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" }, { "id": 2, "name": "Аватар", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" } ], "fileTypesCount": 2 } ``` ##### Описание полей ответа - `fileTypes[]` — массив типов: `id`, `name`, `avatar`, `created_at` - `fileTypesCount` — общее количество ### Тип файла по ID **Метод:** GET **URL:** `https://api.gigma.ru/api/file_types/{id}` **Авторизация:** Bearer token **Headers:** `Accept: application/json; Content-Type: application/json` #### Ответ ```json { "fileType": { "id": 1, "name": "Трудовой договор", "avatar": "https://api.gigma.ru/storage/uploads/default.svg", "created_at": "2024-03-27T07:00:46.000000Z" } } ```