Руководство пользователя HubEx

Краткие инcтрукции по работе, основные понятия и первые шаги по освоению платформы.

ES — примеры

Что здесь: блоки примеров запросов/ответов ручек сервиса ES, вынесенные из endpoints/ES.md. Сигнатуры и типы — там же и в schemas/ES.md.

AssetAttributes

POST /AssetAttributes

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

POST /AssetAttributes

[
  {
    "assetID": 101,
    "data": [
      {
        "attributeID": 2,
        "value": "Значение атрибута",
        "isPublic": true,
        "sortOrder": 1
      }
    ]
  }
]

Пример успешного ответа (202):

Пустое тело ответа.

Негативные сценарии:

DELETE /AssetAttributes

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

DELETE /AssetAttributes

[
  {
    "assetID": 101,
    "data": [
      {
        "attributeID": 2
      }
    ]
  }
]

Пример успешного ответа (202):

[
  {
    "tenantID": 105,
    "assetID": 101,
    "attributeID": 2,
    "error": "InvalidDataFormat@AlreadyActive"
  }
]

Пустой массив — если все строки запроса обработаны успешно.

Негативные сценарии:

Удаляются только явно переданные пары AssetID+AttributeID. Непереданные атрибуты объекта не затрагиваются.

POST /AssetAttributes/v2

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

POST /AssetAttributes/v2

[
  {
    "assetID": 101,
    "data": [
      {
        "attributeID": 2,
        "value": "Новый атрибут",
        "isPublic": true,
        "sortOrder": 1
      }
    ]
  }
]

Пример успешного ответа (202):

[
  {
    "tenantID": 105,
    "assetID": 101,
    "attributeID": 2,
    "error": "InvalidDataFormat@AlreadyActive"
  }
]

Пустой массив — если все строки запроса обработаны успешно.

Негативные сценарии:

Добавляются только явно переданные атрибуты. Пустое значение не создает запись значения атрибута. При отсутствии SortOrder значение по умолчанию обрабатывается на стороне backend.

PUT /AssetAttributes/v2

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

PUT /AssetAttributes/v2

[
  {
    "assetID": 101,
    "data": [
      {
        "attributeID": 2,
        "value": "Обновленное значение",
        "isPublic": false
      }
    ]
  }
]

Пример успешного ответа (202):

[
  {
    "tenantID": 105,
    "assetID": 101,
    "attributeID": 2,
    "error": "InvalidDataFormat@AlreadyActive"
  }
]

Пустой массив — если все строки запроса обработаны успешно.

Негативные сценарии:

Обновляются только явно переданные атрибуты. Если для атрибута передать пустое значение, его значение будет удалено. При отсутствии SortOrder значение по умолчанию обрабатывается на стороне backend.

AssetSearchSettings

GET /AssetSearchSettings

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

GET /AssetSearchSettings

Пример успешного ответа (200), пользователь ещё не сохранял выбор:

[
  {
    "searchFieldID": 1,
    "entityCode": "Asset",
    "fieldCode": "Name",
    "descriptionRu": "Название",
    "isSelected": true,
    "isSelectedByUser": false
  },
  {
    "searchFieldID": 2,
    "entityCode": "Asset",
    "fieldCode": "SerialNumber",
    "descriptionRu": "Серийный номер",
    "isSelected": true,
    "isSelectedByUser": false
  }
]

Пример ответа после сохранения выбора (только SerialNumber):

[
  {
    "searchFieldID": 1,
    "entityCode": "Asset",
    "fieldCode": "Name",
    "descriptionRu": "Название",
    "isSelected": false,
    "isSelectedByUser": false
  },
  {
    "searchFieldID": 2,
    "entityCode": "Asset",
    "fieldCode": "SerialNumber",
    "descriptionRu": "Серийный номер",
    "isSelected": true,
    "isSelectedByUser": true
  }
]

fieldCode — технический код поля; descriptionRu — подпись для UI. isSelected — итоговое состояние чекбокса (при отсутствии сохранённых настроек все доступные поля true). isSelectedByUser — поле сохранено в TenantMemberSearchField; при первом сохранении у всех строк false — отправлять POST /tenantMember с отмеченными id.

Негативные сценарии:

POST /AssetSearchSettings/tenant

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

POST /AssetSearchSettings/tenant

[1,2,3]

Негативные сценарии:

DELETE /AssetSearchSettings/tenant

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

DELETE /AssetSearchSettings/tenant

[2,3]

Негативные сценарии:

POST /AssetSearchSettings/tenantMember

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

POST /AssetSearchSettings/tenantMember

[1,2]

Негативные сценарии:

DELETE /AssetSearchSettings/tenantMember

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

DELETE /AssetSearchSettings/tenantMember

[2]

Негативные сценарии: