Загрузка данных


C:\Work\wt\46>python 46.py
[OK] wrote C:\Work\wt\46\s46.openapi-probe.json
[OK] wrote C:\Work\wt\46\s46.author.compact.json
[INFO] author_login=abc.d.e
[INFO] assigned_to_before=sa-tuz1
[OK] wrote C:\Work\wt\46\s46.executor-update.attempts.json
[INFO] v2_flat_required_status_code http=200 assigned_to_after=sa-tuz1 matches=False
[OK] wrote C:\Work\wt\46\s46.executor-update.attempts.json
[INFO] v2_flat_required_status_object http=200 assigned_to_after=sa-tuz1 matches=False
[OK] wrote C:\Work\wt\46\s46.executor-update.attempts.json
[INFO] v1_flat_required_status_code http=500 assigned_to_after= matches=False
[OK] wrote C:\Work\wt\46\s46.executor-update.attempts.json
[INFO] v1_flat_required_status_object http=500 assigned_to_after= matches=False
[ERROR] no tested PATCH shape changed assigned_to to author


# s46.author.compact.json
{
  "code": "ACSAPA-6",
  "summary": "ST1",
  "description": null,
  "space": {
    "code": "ACSAPA",
    "name": "Автоматизация определения Поверхности Атаки"
  },
  "suit": {
    "code": "task",
    "name": "Задача",
    "icon": "task"
  },
  "createdBy": {
    "externalId": "Abc.D.E",
    "firstName": "Ddd",
    "lastName": "Abc",
    "middleName": "Eee",
    "login": "abc.d.e",
    "userDetails": []
  },
  "updatedBy": {
    "externalId": "Abc.D.E",
    "firstName": "Ddd",
    "lastName": "Abc",
    "middleName": "Eee",
    "login": "abc.d.e",
    "userDetails": []
  },
  "author_candidate_createdBy_login": "abc.d.e",
  "attributes": [
    {
      "code": "assigned_to",
      "name": "Исполнитель",
      "type": "user",
      "value": {
        "externalId": "sa-tuz1",
        "firstName": "sa-tuz1",
        "lastName": "sa-tuz1",
        "middleName": null,
        "login": "sa-tuz1",
        "userDetails": []
      },
      "valueAsString": ""
    },
    {
      "code": "reporter",
      "name": "Автор",
      "type": "user",
      "value": {
        "externalId": "Abc.D.E",
        "firstName": "Ddd",
        "lastName": "Abc",
        "middleName": "Eee",
        "login": "abc.d.e",
        "userDetails": []
      },
      "valueAsString": ""
    },
    {
      "code": "workflow_status",
      "name": "Статус",
      "type": "workflow_status",
      "value": {
        "name": "Open",
        "code": "PN_wZbmKlgyPwHIFYZAN",
        "style": {
          "backgroundColor": "#E8EEF2",
          "iconColor": "#13181B8E",
          "colorByEdsRef": "cool"
        },
        "statusType": "pause"
      },
      "valueAsString": ""
    },
    {
      "code": "due_date",
      "name": "Контрольный срок",
      "type": "date_time",
      "value": "2026-06-29T21:00:00Z",
      "valueAsString": ""
    },
    {
      "code": "label",
      "name": "Labels",
      "type": "label",
      "value": [],
      "valueAsString": ""
    }
  ],
  "assigned_to_login": "sa-tuz1",
  "reporter_login": "abc.d.e"
}



# s46.executor-update.attempts.json
[
  {
    "name": "v2_flat_required_status_code",
    "path": "rest/api/unit/v2/update/ACSAPA-6",
    "http_status": 200,
    "ok": true,
    "matches": false,
    "request_body": {
      "assigned_to": "abc.d.e",
      "description": "",
      "due_date": "2026-06-29T21:00:00Z",
      "label": [],
      "suit": "task",
      "summary": "ST1",
      "workflow_status": "PN_wZbmKlgyPwHIFYZAN"
    },
    "body": {
      "id": "ACSAPA-6"
    },
    "assigned_to_after": "sa-tuz1"
  },
  {
    "name": "v2_flat_required_status_object",
    "path": "rest/api/unit/v2/update/ACSAPA-6",
    "http_status": 200,
    "ok": true,
    "matches": false,
    "request_body": {
      "assigned_to": "abc.d.e",
      "description": "",
      "due_date": "2026-06-29T21:00:00Z",
      "label": [],
      "suit": "task",
      "summary": "ST1",
      "workflow_status": {
        "name": "Open",
        "code": "PN_wZbmKlgyPwHIFYZAN",
        "style": {
          "backgroundColor": "#E8EEF2",
          "iconColor": "#13181B8E",
          "colorByEdsRef": "cool"
        },
        "statusType": "pause"
      }
    },
    "body": {
      "id": "ACSAPA-6"
    },
    "assigned_to_after": "sa-tuz1"
  },
  {
    "name": "v1_flat_required_status_code",
    "path": "rest/api/unit/v1/update/ACSAPA-6",
    "http_status": 500,
    "ok": false,
    "matches": false,
    "request_body": {
      "assigned_to": "abc.d.e",
      "description": "",
      "due_date": "2026-06-29T21:00:00Z",
      "label": [],
      "suit": "task",
      "summary": "ST1",
      "workflow_status": "PN_wZbmKlgyPwHIFYZAN"
    },
    "body": {
      "exceptionUUID": "qaGvlu46Ye",
      "uiErrorMessage": "Что-то пошло не так... Мы уже разбираемся",
      "errorDtoObject": null,
      "errorType": "SWTR_BASIC_ERROR"
    },
    "assigned_to_after": ""
  },
  {
    "name": "v1_flat_required_status_object",
    "path": "rest/api/unit/v1/update/ACSAPA-6",
    "http_status": 500,
    "ok": false,
    "matches": false,
    "request_body": {
      "assigned_to": "abc.d.e",
      "description": "",
      "due_date": "2026-06-29T21:00:00Z",
      "label": [],
      "suit": "task",
      "summary": "ST1",
      "workflow_status": {
        "name": "Open",
        "code": "PN_wZbmKlgyPwHIFYZAN",
        "style": {
          "backgroundColor": "#E8EEF2",
          "iconColor": "#13181B8E",
          "colorByEdsRef": "cool"
        },
        "statusType": "pause"
      }
    },
    "body": {
      "exceptionUUID": "WIEPjIt2Zd",
      "uiErrorMessage": "Что-то пошло не так... Мы уже разбираемся",
      "errorDtoObject": null,
      "errorType": "SWTR_BASIC_ERROR"
    },
    "assigned_to_after": ""
  }
]


# s46.openapi-probe.json
[
  {
    "path": "v3/api-docs",
    "http_status": 200,
    "is_openapi": false
  },
  {
    "path": "v3/api-docs/swagger-config",
    "http_status": 200,
    "is_openapi": false
  },
  {
    "path": "v2/api-docs",
    "http_status": 200,
    "is_openapi": false
  },
  {
    "path": "api-docs",
    "http_status": 200,
    "is_openapi": true,
    "openapi": "3.1.0",
    "title": "sbertrack",
    "version": "35.2.0-16eff094b8",
    "selected_path_count": 36,
    "selected_paths": [
      {
        "path": "/rest/api/unit/v3/{filter}/find",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Поиск с фильтром расширенной информации по юниту"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v3/find",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Поиск с фильтром расширенной информации по юниту"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v3/find/tql",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Постраничный запрос на поиск юнитов с помощью TQL без вычисления кол-ва записей"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v3/count",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Возвращает кол-во юнитов по заданному условию фильтрации"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v2/{filter}/find",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Поиск с фильтром расширенной информации по юниту"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v2/find/tql",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Поиск с помощью TQL расширенной информации по юниту"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v2/clone",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Клонирует задачу",
            "description": "Клонирует задачу"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v1/clone",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Клонирует задачу",
            "description": "Клонирует задачу"
          }
        ]
      },
      {
        "path": "/rest/api/suit/v2/create",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Создает тип юнита"
          }
        ]
      },
      {
        "path": "/rest/api/suit/v1/create",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Создает тип юнита"
          }
        ]
      },
      {
        "path": "/rest/api/plugin/suit/v1/put",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Устанавливает новый типа юнита в систему"
          }
        ]
      },
      {
        "path": "/rest/api/notification/schema/v1/create",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Создает новую схему нотификаций",
            "description": "Создает новую схему нотификаций"
          }
        ]
      },
      {
        "path": "/rest/api/export/v1",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Инициализация выгрузки данных",
            "description": "Создаёт задачу на выгрузку данных в указанный формат (например, .xlsx). Возвращает идентификатор и начальный статус (PENDING) задачи."
          }
        ]
      },
      {
        "path": "/rest/api/attr/v1/search",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Выдает отфильтрованный по наименованию список доступных кастомных атрибутов",
            "description": "Выдает отфильтрованный по наименованию список доступных кастомных атрибутов"
          }
        ]
      },
      {
        "path": "/extension/plugin/v2/rest/api/swtr_tms_plugin/v1/link/test_cycle/player",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Получение списка прилинкованных тест-кейсов и актуальных прогонов к циклу"
          }
        ]
      },
      {
        "path": "/extension/plugin/v2/rest/api/scrum_board_plugin/v3/sprint/unit/find",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Поиск задач в спринте",
            "description": "Поиск задач в спринте без вычисления количества записей"
          }
        ]
      },
      {
        "path": "/extension/plugin/v2/rest/api/scrum_board_plugin/v3/sprint/unit/find/composite",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Поиск задач в спринте",
            "description": "Поиск задач в спринте без вычисления количества записей"
          }
        ]
      },
      {
        "path": "/extension/plugin/v2/rest/api/scrum_board_plugin/v3/backlog/unit/find",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Поиск задач в бэклоге пространства",
            "description": "Поиск задач в бэклоге пространства без вычисления кол-ва записей"
          }
        ]
      },
      {
        "path": "/extension/plugin/v2/rest/api/scrum_board_plugin/v1/assignee/story-points",
        "descriptions": [
          {
            "method": "POST",
            "summary": "Получение статистики относительной сложности по исполнителям и типам wf статусов",
            "description": "Информация об относительной сложности юнитов, сгруппированная по пользователям и типам статусов воркфлоу"
          }
        ]
      },
      {
        "path": "/rest/api/validator/v1/event/{validator_code}/put/{validator_event_code}",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Добавление события для валидатора"
          }
        ]
      },
      {
        "path": "/rest/api/validator/v0/update/{validator_code}",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Изменение валидатора"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v2/update/{code}",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Обновляет существующую задачу по его коду"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v1/update/{code}",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Обновляет существующую задачу по ее коду",
            "description": "Обновляет существующую задачу по ее коду"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v1/update/{code}/space",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Перемещает задачу в пространство",
            "description": "Перемещает задачу в пространство"
          }
        ]
      },
      {
        "path": "/rest/api/suit/v1/update/{code}",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Обновляет тип юнита"
          }
        ]
      },
      {
        "path": "/rest/api/notification/schema/v1/update",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Обновляет существующую схему нотификаций",
            "description": "Обновляет существующую схему нотификаций"
          }
        ]
      },
      {
        "path": "/rest/api/notification/schema/v1/group/change",
        "descriptions": [
          {
            "method": "PATCH",
            "summary": "Обновляет группы пользователей, привязанные к схеме нотификаций",
            "description": "Обновляет группы пользователей, привязанные к схеме нотификаций"
          }
        ]
      },
      {
        "path": "/rest/api/validator/v1/{validator_code}",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Описание валидатора"
          }
        ]
      },
      {
        "path": "/rest/api/unit/v2/{code}",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Получение юнита с атрибутами по его коду"
          }
        ]
      },
      {
        "path": "/rest/api/structure/v1/{structure}",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Описание структуры"
          }
        ]
      },
      {
        "path": "/rest/api/structure/v1/{structure}/level/{level}",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Описание уровня структуры"
          }
        ]
      },
      {
        "path": "/rest/api/notification/schema/v1/{code}",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Ищет схему нотификаций по ее коду",
            "description": "Ищет схему нотификаций по ее коду"
          }
        ]
      },
      {
        "path": "/rest/api/notification/event/v1",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Ищет все события нотификаций",
            "description": "Ищет все события нотификаций"
          }
        ]
      },
      {
        "path": "/rest/api/attr/v1/find",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Выдает список всех доступных кастомных атрибутов",
            "description": "Выдает список всех доступных кастомных атрибутов"
          }
        ]
      },
      {
        "path": "/rest/api/attr/v1/findAll",
        "descriptions": [
          {
            "method": "GET",
            "summary": "Выдает список всех доступных атрибутов (базовых, кастомных и вычисляемых)"
          }
        ]
      },
      {
        "path": "/rest/api/validator/v1/event/{validator_code}/delete/{validator_event_code}",
        "descriptions": [
          {
            "method": "DELETE",
            "summary": "Удаление события для валидатора"
          }
        ]
      }
    ]
  },
  {
    "path": "openapi.json",
    "http_status": 200,
    "is_openapi": false
  },
  {
    "path": "swagger.json",
    "http_status": 200,
    "is_openapi": false
  },
  {
    "path": "swagger-resources",
    "http_status": 200,
    "is_openapi": false
  }
]