# API endpoint reference Сгенерировано Python-сканером (`scripts/gen-api-reference.py`) из `src/food-market.api/Controllers/`. Sprint 28 версия: ловит endpoint'ы с nested generic return-типами. Идентичный логике runtime-job `ApiReferenceDocsJob` (Sprint 24); тот пересоздаёт файл еженедельно при cron `Hangfire:Cron:ApiReferenceDocs`. Всего endpoint'ов: **240**. Контроллеров: **58**. Полная OpenAPI-спека: `/swagger/v1/swagger.json`. Этот reference — human-readable summary. ## `AbcReportController` Base route: `/api/reports/abc` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/reports/abc` | — | | | GET | `/api/reports/abc/export` | — | | ## `AdminCleanupController` Base route: `/api/admin/cleanup` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/admin/cleanup/all` | — | Полная очистка данных текущей организации — всё кроме настроек: остаются Organization, пользователи,… | | DELETE | `/api/admin/cleanup/counterparties` | — | Удалить всех контрагентов текущей организации. Чтобы не нарваться на FK, сначала обнуляем ссылки (Pr… | | GET | `/api/admin/cleanup/stats` | — | | | POST | `/api/admin/cleanup/all/async` | — | | ## `AdminJobsController` Base route: `/api/admin/jobs` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/admin/jobs/recent` | — | | | GET | `/api/admin/jobs/{id:guid}` | — | | ## `AuthForgotPasswordController` Base route: `/api/auth` | Method | Route | Permission | Summary | |---|---|---|---| | POST | `/api/auth/forgot-password` | — | | | POST | `/api/auth/reset-password` | — | | ## `AuthSignupController` Base route: `/api/auth` | Method | Route | Permission | Summary | |---|---|---|---| | POST | `/api/auth/signup` | — | | ## `AuthorizationController` | Method | Route | Permission | Summary | |---|---|---|---| | POST | `/connect/token` | — | | ## `CounterpartiesController` Base route: `/api/catalog/counterparties` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/counterparties/{id:guid}` | — | | | GET | `/api/catalog/counterparties` | — | | | GET | `/api/catalog/counterparties/export` | — | Sprint 19: экспорт списка контрагентов. | | GET | `/api/catalog/counterparties/{id:guid}` | — | | | POST | `/api/catalog/counterparties` | — | | | PUT | `/api/catalog/counterparties/{id:guid}` | — | | ## `CountriesController` Base route: `/api/catalog/countries` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/countries/{id:guid}` | — | | | GET | `/api/catalog/countries` | — | | | GET | `/api/catalog/countries/{id:guid}` | — | | | POST | `/api/catalog/countries` | — | | | PUT | `/api/catalog/countries/{id:guid}` | — | | ## `CurrenciesController` Base route: `/api/catalog/currencies` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/catalog/currencies` | — | | | GET | `/api/catalog/currencies/{id:guid}` | — | | | POST | `/api/catalog/currencies` | — | | | PUT | `/api/catalog/currencies/{id:guid}` | — | | ## `DashboardController` Base route: `/api/dashboard` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/dashboard/low-stock` | — | Список товаров с остатком ≤ MinStock (Product.MinStock задан). Сортировка: меньший «запас в днях» → … | | GET | `/api/dashboard/margin` | — | Маржа за окно N дней: выручка минус COGS (Sum(qty * UnitCost) по строкам проданных товаров). Использ… | | GET | `/api/dashboard/recent-sales` | — | Последние N проведённых чеков (включая возвраты). Дашборд рендерит их как live-feed: SignalR SalePos… | | GET | `/api/dashboard/top-products` | — | Top-N товаров по выручке за окно последних N дней. Default: 7 дней, top-5. Только проведённые чеки (… | ## `DemandsController` Base route: `/api/sales/demands` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/sales/demands/{id:guid}` | — | | | GET | `/api/sales/demands` | — | | | GET | `/api/sales/demands/{id:guid}` | — | | | POST | `/api/sales/demands` | — | | | POST | `/api/sales/demands/{id:guid}/post` | — | | | POST | `/api/sales/demands/{id:guid}/unpost` | — | | | PUT | `/api/sales/demands/{id:guid}` | — | | ## `DemoSeedController` Base route: `/api/admin/seed-demo` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/admin/seed-demo/status` | — | Сводка: какие демо-сущности уже наполнены. Дешёвый — только count'ы, не вызывает seed. UI использует… | | POST | `/api/admin/seed-demo` | — | Запустить seed демо-данных. Идемпотентен — если уже наполнено, возвращает existing summary без встав… | ## `DiagnosticController` Base route: `/api/admin/diagnostic` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/admin/diagnostic/run` | — | | ## `EmployeeRolesController` Base route: `/api/organization/employee-roles` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/organization/employee-roles/{id:guid}` | — | | | GET | `/api/organization/employee-roles` | — | | | GET | `/api/organization/employee-roles/{id:guid}` | — | | | POST | `/api/organization/employee-roles` | — | | | PUT | `/api/organization/employee-roles/{id:guid}` | — | | ## `EmployeesController` Base route: `/api/organization/employees` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/organization/employees/{id:guid}` | — | | | GET | `/api/organization/employees` | — | | | GET | `/api/organization/employees/{id:guid}` | — | | | POST | `/api/organization/employees` | — | | | PUT | `/api/organization/employees/{id:guid}` | — | | ## `EntersController` Base route: `/api/inventory/enters` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/inventory/enters/{id:guid}` | — | | | GET | `/api/inventory/enters` | — | | | GET | `/api/inventory/enters/{id:guid}` | — | | | POST | `/api/inventory/enters` | — | | | POST | `/api/inventory/enters/{id:guid}/post` | — | | | POST | `/api/inventory/enters/{id:guid}/unpost` | — | | | PUT | `/api/inventory/enters/{id:guid}` | — | | ## `ExternalAuthController` Base route: `/api/auth/external` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/auth/external/callback` | — | Callback после успешного OAuth у провайдера. Читает claims и решает, что делать: связать с существую… | | GET | `/api/auth/external/providers` | — | Список доступных SSO-провайдеров. Web-фронт по этому списку решает, какие кнопки рисовать на /login. | | GET | `/api/auth/external/{provider}` | — | Инициирует OAuth challenge на провайдере. Если провайдер не сконфигурирован — 503 с подсказкой. | ## `FeedbackController` Base route: `/api/feedback` | Method | Route | Permission | Summary | |---|---|---|---| | POST | `/api/feedback` | — | | ## `GlobalSearchController` Base route: `/api/search` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/search/global` | — | | ## `InventoriesController` Base route: `/api/inventory/inventories` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/inventory/inventories/{id:guid}` | — | | | GET | `/api/inventory/inventories` | — | | | GET | `/api/inventory/inventories/{id:guid}` | — | | | POST | `/api/inventory/inventories` | — | | | POST | `/api/inventory/inventories/{id:guid}/post` | — | | | POST | `/api/inventory/inventories/{id:guid}/unpost` | — | | | PUT | `/api/inventory/inventories/{id:guid}` | — | | ## `LossesController` Base route: `/api/inventory/losses` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/inventory/losses/{id:guid}` | — | | | GET | `/api/inventory/losses` | — | | | GET | `/api/inventory/losses/{id:guid}` | — | | | POST | `/api/inventory/losses` | — | | | POST | `/api/inventory/losses/{id:guid}/post` | — | | | POST | `/api/inventory/losses/{id:guid}/unpost` | — | | | PUT | `/api/inventory/losses/{id:guid}` | — | | ## `LoyaltyCardsController` Base route: `/api/loyalty/cards` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/loyalty/cards/{id:guid}` | — | | | GET | `/api/loyalty/cards` | — | | | GET | `/api/loyalty/cards/lookup` | — | Lookup по CardNumber — используется кассой при оплате. Возвращает 404 если карты нет, 409 если карта… | | POST | `/api/loyalty/cards/issue` | — | | | POST | `/api/loyalty/cards/{id:guid}/block` | — | | | POST | `/api/loyalty/cards/{id:guid}/unblock` | — | | ## `LoyaltyProgramsController` Base route: `/api/loyalty/programs` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/loyalty/programs/{id:guid}` | — | | | GET | `/api/loyalty/programs` | — | | | GET | `/api/loyalty/programs/{id:guid}` | — | | | POST | `/api/loyalty/programs` | — | | | PUT | `/api/loyalty/programs/{id:guid}` | — | | ## `MeAccountController` Base route: `/api/me` | Method | Route | Permission | Summary | |---|---|---|---| | POST | `/api/me/change-password` | — | Сменить пароль текущему юзеру. Требует текущий пароль для защиты от случайного/злонамеренного измене… | ## `MeSessionsController` Base route: `/api/me/sessions` | Method | Route | Permission | Summary | |---|---|---|---| | POST | `/api/me/sessions/revoke-all` | — | Гасит все refresh-токены текущего юзера. Использовать когда есть подозрение на угон cookies/пароля. | ## `MoySkladImportController` Base route: `/api/admin/moysklad` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/admin/moysklad/settings` | — | | | POST | `/api/admin/moysklad/import-counterparties` | — | | | POST | `/api/admin/moysklad/import-products` | — | | | POST | `/api/admin/moysklad/test` | — | | | PUT | `/api/admin/moysklad/settings` | — | | ## `MoySkladSyncStatusController` Base route: `/api/moysklad` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/moysklad/sync-status` | — | | ## `OrgAuditLogController` Base route: `/api/admin/audit-log` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/admin/audit-log` | — | | | POST | `/api/admin/audit-log/export` | — | Sprint 22: streaming-export audit-log для compliance / расследований. Multi-tenant — query-filter пр… | ## `OrgExportController` Base route: `/api/org/export` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/org/export` | — | | | GET | `/api/org/export/download/{token}` | — | Anonymous download по токену. Не требует авторизации — security через 256-битный random token + TTL … | | GET | `/api/org/export/{id:guid}` | — | | | POST | `/api/org/export` | — | Создать новый экспорт. Возвращает 202 + Id; полезно сразу polled'ить GET /api/org/export/{id} до Sta… | ## `OrgFiscalSettingsController` Base route: `/api/organization/fiscal` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/organization/fiscal` | — | | | GET | `/api/organization/fiscal/providers` | — | Доступные значения провайдера для select'а в UI. Возвращаем массив, потому что enum-значения мы НЕ х… | | POST | `/api/organization/fiscal/test-send` | — | Тестовая отправка: создаёт «фейк-чек» (in-memory, не в БД) и отправляет через выбранного провайдера.… | | PUT | `/api/organization/fiscal` | — | | ## `OrganizationSettingsController` Base route: `/api/organization` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/organization/settings` | — | | | PUT | `/api/organization/settings` | — | | ## `PlatformSettingsController` Base route: `/api/super-admin/platform-settings` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/super-admin/platform-settings` | — | | | POST | `/api/super-admin/platform-settings/test-send` | — | | | PUT | `/api/super-admin/platform-settings` | — | | ## `PosController` Base route: `/api/pos/v1` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/pos/v1/sync` | — | | | POST | `/api/pos/v1/sales` | — | | ## `PriceTypesController` Base route: `/api/catalog/price-types` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/price-types/{id:guid}` | — | | | GET | `/api/catalog/price-types` | — | | | GET | `/api/catalog/price-types/{id:guid}` | — | | | POST | `/api/catalog/price-types` | — | | | PUT | `/api/catalog/price-types/{id:guid}` | — | | ## `ProductGroupsController` Base route: `/api/catalog/product-groups` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/product-groups/{id:guid}` | — | | | GET | `/api/catalog/product-groups` | — | | | GET | `/api/catalog/product-groups/{id:guid}` | — | | | POST | `/api/catalog/product-groups` | — | | | PUT | `/api/catalog/product-groups/{id:guid}` | — | | ## `ProductImagesController` Base route: `/api/catalog/products/{productId:guid}/images` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/products/{productId:guid}/images/{imageId:guid}` | — | | | GET | `/api/catalog/products/{productId:guid}/images` | — | | | POST | `/api/catalog/products/{productId:guid}/images` | — | | | POST | `/api/catalog/products/{productId:guid}/images/{imageId:guid}/main` | — | | ## `ProductsController` Base route: `/api/catalog/products` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/products/{id:guid}` | — | | | GET | `/api/catalog/products` | — | | | GET | `/api/catalog/products/barcode-duplicates` | — | Находит штрихкоды, привязанные к более чем одному товару в текущей организации. Уникальный индекс эт… | | GET | `/api/catalog/products/by-barcode/{value}` | — | Точный поиск по штрихкоду (для сканера). 0 → 404, 1 → объект, несколько → { items: [...] } чтобы UI … | | GET | `/api/catalog/products/export` | — | Sprint 19: экспорт списка товаров с теми же фильтрами что и /api/catalog/products. Сервер-side генер… | | GET | `/api/catalog/products/quick-search` | — | Лёгкий поиск для inline-добавления строк в документы (приёмка, продажа). Ранжирует точное совпадение… | | GET | `/api/catalog/products/{id:guid}` | — | | | PATCH | `/api/catalog/products/{id:guid}/price` | — | | | POST | `/api/catalog/products` | — | | | POST | `/api/catalog/products/bulk-update` | — | | | POST | `/api/catalog/products/import-csv` | — | | | POST | `/api/catalog/products/import/1c-csv` | — | | | POST | `/api/catalog/products/{id:guid}/recalc-retail` | — | «Привести розничную к себестоимости»: ставит дефолтную розничную цену = ceil(Cost * (1 + Group.Marku… | | PUT | `/api/catalog/products/{id:guid}` | — | | ## `ProfitReportController` Base route: `/api/reports/profit` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/reports/profit` | — | | | GET | `/api/reports/profit/export` | — | | ## `PromotionsController` Base route: `/api/promotions` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/promotions/{id:guid}` | — | | | GET | `/api/promotions` | — | | | GET | `/api/promotions/{id:guid}` | — | | | POST | `/api/promotions` | — | | | PUT | `/api/promotions/{id:guid}` | — | | ## `RetailPointsController` Base route: `/api/catalog/retail-points` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/retail-points/{id:guid}` | — | | | GET | `/api/catalog/retail-points` | — | | | GET | `/api/catalog/retail-points/{id:guid}` | — | | | POST | `/api/catalog/retail-points` | — | | | PUT | `/api/catalog/retail-points/{id:guid}` | — | | ## `RetailSalesController` Base route: `/api/sales/retail` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/sales/retail/{id:guid}` | — | | | GET | `/api/sales/retail` | — | | | GET | `/api/sales/retail/export` | — | Sprint 19: экспорт списка чеков с фильтрами status/storeId/from/to. | | GET | `/api/sales/retail/stats` | — | Aggregated sales metrics + daily series for the dashboard. Series buckets are days; defaults to last… | | GET | `/api/sales/retail/{id:guid}` | — | | | POST | `/api/sales/retail` | — | | | POST | `/api/sales/retail/{id:guid}/create-return` | — | POST /create-return — копирует строки проведённого чека в новый Draft с IsReturn=true и ReferenceSal… | | POST | `/api/sales/retail/{id:guid}/post` | — | | | POST | `/api/sales/retail/{id:guid}/unpost` | — | | | PUT | `/api/sales/retail/{id:guid}` | — | | ## `SalesReportController` Base route: `/api/reports/sales` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/reports/sales` | — | | | GET | `/api/reports/sales/export` | — | | ## `StockController` Base route: `/api/inventory` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/inventory/movements` | — | | | GET | `/api/inventory/stock` | — | | | GET | `/api/inventory/stock/export` | — | Sprint 19: экспорт остатков. | ## `StockReportController` Base route: `/api/reports/stock` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/reports/stock` | — | | | GET | `/api/reports/stock/export` | — | | ## `StoresController` Base route: `/api/catalog/stores` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/stores/{id:guid}` | — | | | GET | `/api/catalog/stores` | — | | | GET | `/api/catalog/stores/{id:guid}` | — | | | POST | `/api/catalog/stores` | — | | | PUT | `/api/catalog/stores/{id:guid}` | — | | ## `SuperAdminController` Base route: `/api/super-admin` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/super-admin/audit-log` | — | | | GET | `/api/super-admin/dashboard` | — | | | GET | `/api/super-admin/settings` | — | | | GET | `/api/super-admin/setup-status` | — | | | PUT | `/api/super-admin/settings` | — | | ## `SuperAdminEmployeesController` Base route: `/api/super-admin/organizations/{orgId:guid}/employees` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/super-admin/organizations/{orgId:guid}/employees/{id:guid}` | — | | | GET | `/api/super-admin/organizations/{orgId:guid}/employees` | — | | | GET | `/api/super-admin/organizations/{orgId:guid}/employees/{id:guid}` | — | | | POST | `/api/super-admin/organizations/{orgId:guid}/employees` | — | | | POST | `/api/super-admin/organizations/{orgId:guid}/employees/{id:guid}/account/toggle-active` | — | | | POST | `/api/super-admin/organizations/{orgId:guid}/employees/{id:guid}/reset-password` | — | | | POST | `/api/super-admin/organizations/{orgId:guid}/employees/{id:guid}/toggle-active` | — | | | PUT | `/api/super-admin/organizations/{orgId:guid}/employees/{id:guid}` | — | | ## `SuperAdminOrganizationsController` Base route: `/api/super-admin/organizations` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/super-admin/organizations/{id:guid}` | — | | | GET | `/api/super-admin/organizations` | — | | | GET | `/api/super-admin/organizations/{id:guid}` | — | | | POST | `/api/super-admin/organizations` | — | | | POST | `/api/super-admin/organizations/{id:guid}/archive` | — | | | POST | `/api/super-admin/organizations/{id:guid}/change-owner` | — | | | POST | `/api/super-admin/organizations/{id:guid}/restore` | — | | | PUT | `/api/super-admin/organizations/{id:guid}` | — | | ## `SuperAdminUnitsOfMeasureController` Base route: `/api/super-admin/units-of-measure` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/super-admin/units-of-measure/{id:guid}` | — | Soft-delete: IsActive=false. Если на единицу ссылаются продукты или активные org-junction'ы — 409 со… | | GET | `/api/super-admin/units-of-measure` | — | | | GET | `/api/super-admin/units-of-measure/{id:guid}` | — | | | POST | `/api/super-admin/units-of-measure` | — | | | PUT | `/api/super-admin/units-of-measure/{id:guid}` | — | | ## `SupplierReturnsController` Base route: `/api/purchases/supplier-returns` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/purchases/supplier-returns/{id:guid}` | — | | | GET | `/api/purchases/supplier-returns` | — | | | GET | `/api/purchases/supplier-returns/{id:guid}` | — | | | POST | `/api/purchases/supplier-returns` | — | | | POST | `/api/purchases/supplier-returns/{id:guid}/post` | — | | | POST | `/api/purchases/supplier-returns/{id:guid}/unpost` | — | | | PUT | `/api/purchases/supplier-returns/{id:guid}` | — | | ## `SuppliesController` Base route: `/api/purchases/supplies` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/purchases/supplies/{id:guid}` | — | | | GET | `/api/purchases/supplies` | — | | | GET | `/api/purchases/supplies/export` | — | Sprint 19: экспорт списка приёмок с теми же фильтрами. | | GET | `/api/purchases/supplies/{id:guid}` | — | | | POST | `/api/purchases/supplies` | — | | | POST | `/api/purchases/supplies/{id:guid}/post` | — | | | POST | `/api/purchases/supplies/{id:guid}/unpost` | — | | | PUT | `/api/purchases/supplies/{id:guid}` | — | | ## `TelegramBindingController` Base route: `/api/organization/telegram` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/organization/telegram` | — | | | GET | `/api/organization/telegram/status` | — | | | PUT | `/api/organization/telegram/bind` | — | | ## `TransfersController` Base route: `/api/inventory/transfers` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/inventory/transfers/{id:guid}` | — | | | GET | `/api/inventory/transfers` | — | | | GET | `/api/inventory/transfers/{id:guid}` | — | | | POST | `/api/inventory/transfers` | — | | | POST | `/api/inventory/transfers/{id:guid}/post` | — | | | POST | `/api/inventory/transfers/{id:guid}/unpost` | — | | | PUT | `/api/inventory/transfers/{id:guid}` | — | | ## `TwoFactorController` Base route: `/api/me/2fa` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/me/2fa/status` | — | | | POST | `/api/me/2fa/disable` | — | | | POST | `/api/me/2fa/enroll` | — | | | POST | `/api/me/2fa/verify` | — | | ## `UnitsOfMeasureController` Base route: `/api/catalog/units-of-measure` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/catalog/units-of-measure/{id:guid}/enable` | — | Отключить global для текущей орги. Если на эту единицу ссылаются продукты орги — 409 со списком назв… | | GET | `/api/catalog/units-of-measure` | — | Список единиц для текущей орги: только включённые active globals. Для SuperAdmin без override — все … | | GET | `/api/catalog/units-of-measure/{id:guid}` | — | | | POST | `/api/catalog/units-of-measure/{id:guid}/enable` | — | Включить global для текущей орги. Идемпотентно: повторный вызов отдаёт 204 и не плодит дубликатов ju… | ## `UploadsController` Base route: `/uploads` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/uploads/{*path}` | — | | ## `UserPresetsController` Base route: `/api/user/presets` | Method | Route | Permission | Summary | |---|---|---|---| | DELETE | `/api/user/presets/{id:guid}` | — | | | GET | `/api/user/presets` | — | | | POST | `/api/user/presets` | — | | | PUT | `/api/user/presets/{id:guid}` | — | | ## `WhatsNewController` Base route: `/api/whats-new` | Method | Route | Permission | Summary | |---|---|---|---| | GET | `/api/whats-new` | — | |