@hubex/mcp 0.11.0 → 0.11.20261021

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hubex/mcp",
3
- "version": "0.11.0",
3
+ "version": "0.11.20261021",
4
4
  "type": "module",
5
5
  "description": "MCP server for managing HubEx test data (tasks, assets, companies, users) via the HubEx REST API",
6
6
  "author": "HubEx Team",
@@ -1823,7 +1823,7 @@
1823
1823
  "Tasks"
1824
1824
  ],
1825
1825
  "summary": "Создаёт batch-запрос на асинхронный экспорт вложений заявок.",
1826
- "description": "## Пример запроса:\r\n`POST /Tasks/attachments/v3.0`\r\n \r\nВ примере заполнены все поля контракта. Числа и строки показывают тип и смысл, это не обязательный набор.\r\nЕсли `sort` не передан, сортировка — дата создания по убыванию (`orderBy` 1, `direction` 2).\r\nЕсли `range` не передан, берётся первая страница из 1000 заявок.\r\n```json\r\n{\r\n \"filter\": {\r\n \"tasks\": [12345, 12346],\r\n \"taskNumbers\": [\"A-1042\"],\r\n \"taskStatuses\": [1, 2],\r\n \"taskStages\": [3],\r\n \"taskTypes\": [1],\r\n \"taskTemplates\": [\"c8d18e2a0b1c4d5e6f708192a3b4c5d6\"],\r\n \"requestMethods\": [1],\r\n \"requestedBy\": [15],\r\n \"assignedTo\": [42],\r\n \"approvalWith\": [7],\r\n \"escalatedTo\": [9],\r\n \"assetResponsiblePersons\": [21],\r\n \"parents\": [1001],\r\n \"branches\": [1],\r\n \"companies\": [4],\r\n \"contracts\": [12],\r\n \"payeeCompanies\": [4],\r\n \"workTypes\": [6],\r\n \"criticalities\": [2],\r\n \"assets\": [8801],\r\n \"startWithAssets\": [500],\r\n \"assetTypes\": [3],\r\n \"assetClasses\": [1],\r\n \"assetSchemas\": [11],\r\n \"districts\": [2],\r\n \"contacts\": [33],\r\n \"erpIDs\": [\"ERP-7781\"],\r\n \"ratingCriterias\": [1],\r\n \"attributeValues\": [\r\n { \"id\": 7, \"from\": \"2026-09-01\", \"till\": \"2026-09-30\", \"value\": \"Насос\" }\r\n ],\r\n \"creationPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"assignationPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"completionPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"closingPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"deadlinePeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-10-15T23:59:59\" },\r\n \"lastModifiedPeriod\": { \"from\": \"2026-09-20T00:00:00\", \"till\": \"2026-10-02T23:59:59\" },\r\n \"flags\": { \"isDeleted\": false },\r\n \"exportFlags\": { \"noData\": false },\r\n \"taskFlags\": {\r\n \"isClosed\": false,\r\n \"isFavourite\": true,\r\n \"isCompleted\": false,\r\n \"isAssigned\": true,\r\n \"isOutdated\": false,\r\n \"isRated\": false,\r\n \"hasAssigneeCheckedIn\": true,\r\n \"isScheduled\": false,\r\n \"topLevelTasksForHierarchy\": false\r\n },\r\n \"geoViewPort\": {\r\n \"radius\": 500,\r\n \"pointCenter\": { \"latitude\": 55.7558, \"longitude\": 37.6173 },\r\n \"pointNorthEast\": { \"latitude\": 55.76, \"longitude\": 37.65 },\r\n \"pointSouthWest\": { \"latitude\": 55.74, \"longitude\": 37.58 }\r\n }\r\n },\r\n \"searchText\": \"насос\",\r\n \"sort\": { \"orderBy\": 1, \"direction\": 2 },\r\n \"flags\": { \"isDeleted\": false },\r\n \"range\": { \"offset\": 0, \"fetch\": 100 }\r\n}\r\n```\r\n \r\nПоле `filter` обязательно. Это короткий контракт полей, которые применяет `WORK.TaskFilterApply_V2`.\r\nПеред постановкой задания он копируется в `TaskFilterData`, и worker ищет заявки через `ListShortAsync`.\r\nПоля вне этого контракта игнорируются и на набор заявок не влияют.\r\nПоле `range` — страница этого списка заявок (`offset`/`fetch`) с учётом `sort`, а не страница вложений.\r\nВ архив попадают вложения только этих заявок. Заявка без загруженных файлов папку не получает.\r\n \r\n`flags.isDeleted` относится к вложениям: `false` — только неудалённые, `true` — только удалённые.\r\nЕсли поле не передано, по удалению вложения не фильтруются.\r\n`filter.flags.isDeleted` — отдельный признак: он отбирает удалённые заявки, не вложения.\r\n`filter.exportFlags.noData: true` оставляет список заявок пустым.\r\n`attributeValues.value` с `;;` задаёт несколько значений строкового атрибута.\r\n \r\nЗаголовок `X-Concurrency-Stamp` (опциональный Guid) — идемпотентность постановки, как при создании заявки.\r\n \r\n## Пример успешного ответа (202):\r\n```json\r\n{\r\n \"isSuccessed\": true,\r\n \"requestID\": \"305\"\r\n}\r\n```\r\n \r\nПоле `error` при успешном `202` не возвращается.\r\nОшибки выполнения экспорта (после постановки в очередь) — только через status API.\r\n \r\nРучка только ставит экспорт вложений в очередь и возвращает идентификатор batch-запроса.\r\nФормирование архива выполняется фоновым механизмом.\r\n \r\n## Негативные сценарии:\r\n- 400 BadRequest: не передан `filter`, либо заголовок `X-Concurrency-Stamp` передан и не является Guid. Отсутствующий или пустой заголовок идемпотентность не включает.\r\n- 401 Unauthorized: отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden: недостаточно прав `TasksExport`.\r\n- 409 Conflict: запрос с тем же `X-Concurrency-Stamp` уже был принят.\r\n- 500 Internal Server Error: ошибка при постановке batch-запроса.",
1826
+ "description": "## Пример запроса:\r\n`POST /Tasks/attachments/v3.0`\r\n \r\nВ примере заполнены все поля контракта. Числа и строки показывают тип и смысл, это не обязательный набор.\r\nЕсли `sort` не передан, сортировка — дата создания по убыванию (`orderBy` 1, `direction` 2).\r\nЕсли `range` не передан, берётся первая страница из 1000 заявок.\r\n```json\r\n{\r\n \"filter\": {\r\n \"tasks\": [12345, 12346],\r\n \"taskNumbers\": [\"A-1042\"],\r\n \"taskStatuses\": [1, 2],\r\n \"taskStages\": [3],\r\n \"taskTypes\": [1],\r\n \"taskTemplates\": [\"c8d18e2a0b1c4d5e6f708192a3b4c5d6\"],\r\n \"requestMethods\": [1],\r\n \"requestedBy\": [15],\r\n \"assignedTo\": [42],\r\n \"approvalWith\": [7],\r\n \"escalatedTo\": [9],\r\n \"assetResponsiblePersons\": [21],\r\n \"parents\": [1001],\r\n \"branches\": [1],\r\n \"companies\": [4],\r\n \"contracts\": [12],\r\n \"payeeCompanies\": [4],\r\n \"workTypes\": [6],\r\n \"criticalities\": [2],\r\n \"assets\": [8801],\r\n \"startWithAssets\": [500],\r\n \"assetTypes\": [3],\r\n \"assetClasses\": [1],\r\n \"assetSchemas\": [11],\r\n \"districts\": [2],\r\n \"contacts\": [33],\r\n \"erpIDs\": [\"ERP-7781\"],\r\n \"ratingCriterias\": [1],\r\n \"attributeValues\": [\r\n { \"id\": 7, \"from\": \"2026-09-01\", \"till\": \"2026-09-30\", \"value\": \"Насос\" }\r\n ],\r\n \"creationPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"assignationPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"completionPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"closingPeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-09-30T23:59:59\" },\r\n \"deadlinePeriod\": { \"from\": \"2026-09-01T00:00:00\", \"till\": \"2026-10-15T23:59:59\" },\r\n \"lastModifiedPeriod\": { \"from\": \"2026-09-20T00:00:00\", \"till\": \"2026-10-02T23:59:59\" },\r\n \"flags\": { \"isDeleted\": false },\r\n \"exportFlags\": { \"noData\": false },\r\n \"taskFlags\": {\r\n \"isClosed\": false,\r\n \"isFavourite\": true,\r\n \"isCompleted\": false,\r\n \"isAssigned\": true,\r\n \"isOutdated\": false,\r\n \"isRated\": false,\r\n \"hasAssigneeCheckedIn\": true,\r\n \"isScheduled\": false,\r\n \"topLevelTasksForHierarchy\": false\r\n },\r\n \"geoViewPort\": {\r\n \"radius\": 500,\r\n \"pointCenter\": { \"latitude\": 55.7558, \"longitude\": 37.6173 },\r\n \"pointNorthEast\": { \"latitude\": 55.76, \"longitude\": 37.65 },\r\n \"pointSouthWest\": { \"latitude\": 55.74, \"longitude\": 37.58 }\r\n }\r\n },\r\n \"searchText\": \"насос\",\r\n \"sort\": { \"orderBy\": 1, \"direction\": 2 },\r\n \"flags\": { \"isDeleted\": false },\r\n \"range\": { \"offset\": 0, \"fetch\": 100 }\r\n}\r\n```\r\n \r\nПоле `filter` обязательно. Это короткий контракт полей, которые применяет `WORK.TaskFilterApply_V2`.\r\nПеред постановкой задания он копируется в `TaskFilterData`, и worker ищет заявки через `ListShortAsync`.\r\nПоля вне этого контракта игнорируются и на набор заявок не влияют.\r\nПоле `range` — страница этого списка заявок (`offset`/`fetch`) с учётом `sort`, а не страница вложений.\r\nВ архив попадают вложения только этих заявок. Заявка без загруженных файлов папку не получает.\r\n \r\n`flags.isDeleted` относится к вложениям: `false` — только неудалённые, `true` — только удалённые.\r\nЕсли поле не передано, по удалению вложения не фильтруются.\r\n`filter.flags.isDeleted` — отдельный признак: он отбирает удалённые заявки, не вложения.\r\n`filter.exportFlags.noData: true` оставляет список заявок пустым.\r\n`attributeValues.value` с `;;` задаёт несколько значений строкового атрибута.\r\n \r\nЗаголовок `X-Concurrency-Stamp` (опциональный Guid) — идемпотентность постановки, как при создании заявки.\r\n \r\n## Пример успешного ответа (202):\r\n```json\r\n{\r\n \"isSuccessed\": true,\r\n \"requestID\": \"305\"\r\n}\r\n```\r\n \r\nПоле `error` при успешном `202` не возвращается.\r\nОшибки выполнения экспорта (после постановки в очередь) — только через status API.\r\n \r\nРучка только ставит экспорт вложений в очередь и возвращает идентификатор batch-запроса.\r\nФормирование архива выполняется фоновым механизмом.\r\n \r\n## Негативные сценарии:\r\n- 400 BadRequest: заголовок `X-Concurrency-Stamp` передан и не является Guid. Отсутствующий или пустой заголовок идемпотентность не включает.\r\n- 401 Unauthorized: отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden: недостаточно прав `TasksExport`.\r\n- 409 Conflict: не передан `filter`, либо запрос с тем же `X-Concurrency-Stamp` уже был принят.\r\n- 500 Internal Server Error: ошибка при постановке batch-запроса.",
1827
1827
  "parameters": [
1828
1828
  {
1829
1829
  "name": "X-Application-ID",
@@ -1899,10 +1899,10 @@
1899
1899
  }
1900
1900
  },
1901
1901
  "409": {
1902
- "description": "Запрос с тем же `X-Concurrency-Stamp` уже был принят."
1902
+ "description": "Не передан `filter`, либо запрос с тем же `X-Concurrency-Stamp` уже был принят."
1903
1903
  },
1904
1904
  "400": {
1905
- "description": "Не переданы фильтры заявок или `X-Concurrency-Stamp` не является Guid."
1905
+ "description": "`X-Concurrency-Stamp` передан и не является Guid."
1906
1906
  },
1907
1907
  "401": {
1908
1908
  "description": "Отсутствует или некорректен Bearer-токен."