lucius-mcp 0.1.0__py3-none-any.whl

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.
Files changed (1433) hide show
  1. lucius_mcp-0.1.0.dist-info/METADATA +269 -0
  2. lucius_mcp-0.1.0.dist-info/RECORD +1433 -0
  3. lucius_mcp-0.1.0.dist-info/WHEEL +4 -0
  4. lucius_mcp-0.1.0.dist-info/entry_points.txt +2 -0
  5. lucius_mcp-0.1.0.dist-info/licenses/LICENSE +201 -0
  6. src/__init__.py +0 -0
  7. src/client/__init__.py +59 -0
  8. src/client/client.py +1203 -0
  9. src/client/exceptions.py +61 -0
  10. src/client/generated/README.md +878 -0
  11. src/client/generated/__init__.py +1438 -0
  12. src/client/generated/api/__init__.py +17 -0
  13. src/client/generated/api/launch_controller_api.py +8330 -0
  14. src/client/generated/api/launch_search_controller_api.py +644 -0
  15. src/client/generated/api/shared_step_attachment_controller_api.py +1734 -0
  16. src/client/generated/api/shared_step_controller_api.py +1949 -0
  17. src/client/generated/api/shared_step_scenario_controller_api.py +2597 -0
  18. src/client/generated/api/test_case_attachment_controller_api.py +1734 -0
  19. src/client/generated/api/test_case_bulk_controller_api.py +5341 -0
  20. src/client/generated/api/test_case_controller_api.py +3926 -0
  21. src/client/generated/api/test_case_custom_field_controller_api.py +863 -0
  22. src/client/generated/api/test_case_overview_controller_api.py +294 -0
  23. src/client/generated/api/test_case_scenario_controller_api.py +3054 -0
  24. src/client/generated/api/test_case_search_controller_api.py +678 -0
  25. src/client/generated/api/test_case_tag_controller_api.py +581 -0
  26. src/client/generated/api_client.py +807 -0
  27. src/client/generated/api_response.py +21 -0
  28. src/client/generated/configuration.py +573 -0
  29. src/client/generated/docs/AccessGroupBulkDto.md +29 -0
  30. src/client/generated/docs/AccessGroupCreateDto.md +31 -0
  31. src/client/generated/docs/AccessGroupDto.md +33 -0
  32. src/client/generated/docs/AccessGroupPaDto.md +33 -0
  33. src/client/generated/docs/AccessGroupPatchDto.md +31 -0
  34. src/client/generated/docs/AccessGroupProjectAccessDto.md +30 -0
  35. src/client/generated/docs/AccessGroupProjectsAddDto.md +29 -0
  36. src/client/generated/docs/AccessGroupUserDto.md +29 -0
  37. src/client/generated/docs/AccessGroupUsersAddDto.md +29 -0
  38. src/client/generated/docs/AllowedRoleDto.md +12 -0
  39. src/client/generated/docs/AnalyticAutomationTrendDto.md +33 -0
  40. src/client/generated/docs/AnalyticDto.md +38 -0
  41. src/client/generated/docs/AnalyticInterval.md +16 -0
  42. src/client/generated/docs/AnalyticLaunchDurationHistogramDto.md +34 -0
  43. src/client/generated/docs/AnalyticMuteTrendDto.md +30 -0
  44. src/client/generated/docs/AnalyticTcAutomationCountDto.md +30 -0
  45. src/client/generated/docs/AnalyticTcStatusCountDto.md +32 -0
  46. src/client/generated/docs/AnalyticTrByStatusTrendDto.md +33 -0
  47. src/client/generated/docs/AqlValidateResponseDto.md +30 -0
  48. src/client/generated/docs/AssignRequestDto.md +29 -0
  49. src/client/generated/docs/AsyncJobDto.md +33 -0
  50. src/client/generated/docs/AsyncJobStatusDto.md +18 -0
  51. src/client/generated/docs/AsyncJobStepDto.md +35 -0
  52. src/client/generated/docs/AsyncJobStepStatusDto.md +16 -0
  53. src/client/generated/docs/AsyncJobWithStepsDto.md +34 -0
  54. src/client/generated/docs/AttachmentRow.md +33 -0
  55. src/client/generated/docs/AttachmentStepDto.md +29 -0
  56. src/client/generated/docs/Attrs.md +29 -0
  57. src/client/generated/docs/AuditActionTypeDto.md +14 -0
  58. src/client/generated/docs/BlobStorageStats.md +31 -0
  59. src/client/generated/docs/BlobStorageUpdateStats.md +33 -0
  60. src/client/generated/docs/BodyStepDto.md +30 -0
  61. src/client/generated/docs/BoldMark.md +28 -0
  62. src/client/generated/docs/BusinessMetricDto.md +30 -0
  63. src/client/generated/docs/CategoryCreateDto.md +32 -0
  64. src/client/generated/docs/CategoryDto.md +37 -0
  65. src/client/generated/docs/CategoryMatcherCreateDto.md +33 -0
  66. src/client/generated/docs/CategoryMatcherDto.md +38 -0
  67. src/client/generated/docs/CategoryMatcherPatchDto.md +32 -0
  68. src/client/generated/docs/CategoryPatchDto.md +31 -0
  69. src/client/generated/docs/CfvMergeToExistingGlobalValueDto.md +30 -0
  70. src/client/generated/docs/CfvMergeToNewGlobalValueDto.md +32 -0
  71. src/client/generated/docs/Ci.md +30 -0
  72. src/client/generated/docs/CleanerSchemaCreateDto.md +32 -0
  73. src/client/generated/docs/CleanerSchemaDto.md +37 -0
  74. src/client/generated/docs/CleanerSchemaPatchDto.md +31 -0
  75. src/client/generated/docs/CleanerSchemaTargetDto.md +14 -0
  76. src/client/generated/docs/CodeBlockDocumentNode.md +30 -0
  77. src/client/generated/docs/CodeMark.md +28 -0
  78. src/client/generated/docs/CommentCreateDto.md +30 -0
  79. src/client/generated/docs/CommentDto.md +38 -0
  80. src/client/generated/docs/CommentPatchDto.md +29 -0
  81. src/client/generated/docs/CreateLaunchEvent.md +32 -0
  82. src/client/generated/docs/CsvImportOptions.md +33 -0
  83. src/client/generated/docs/CustomFieldBulkAddToProjectsDto.md +30 -0
  84. src/client/generated/docs/CustomFieldBulkArchiveDto.md +30 -0
  85. src/client/generated/docs/CustomFieldCreateDto.md +31 -0
  86. src/client/generated/docs/CustomFieldDto.md +39 -0
  87. src/client/generated/docs/CustomFieldExportFieldMapping.md +32 -0
  88. src/client/generated/docs/CustomFieldImportFieldMapping.md +31 -0
  89. src/client/generated/docs/CustomFieldMergeDto.md +30 -0
  90. src/client/generated/docs/CustomFieldPatchDto.md +32 -0
  91. src/client/generated/docs/CustomFieldProjectCountDto.md +30 -0
  92. src/client/generated/docs/CustomFieldProjectDto.md +40 -0
  93. src/client/generated/docs/CustomFieldProjectPatchDto.md +31 -0
  94. src/client/generated/docs/CustomFieldProjectWithValuesDto.md +30 -0
  95. src/client/generated/docs/CustomFieldRawDto.md +35 -0
  96. src/client/generated/docs/CustomFieldSchemaCountDto.md +30 -0
  97. src/client/generated/docs/CustomFieldSchemaCreateDto.md +31 -0
  98. src/client/generated/docs/CustomFieldSchemaDto.md +36 -0
  99. src/client/generated/docs/CustomFieldSchemaPatchDto.md +30 -0
  100. src/client/generated/docs/CustomFieldValueBulkDeleteDto.md +30 -0
  101. src/client/generated/docs/CustomFieldValueBulkMergeDto.md +33 -0
  102. src/client/generated/docs/CustomFieldValueDto.md +30 -0
  103. src/client/generated/docs/CustomFieldValuePatchDto.md +31 -0
  104. src/client/generated/docs/CustomFieldValueProjectCreateDto.md +32 -0
  105. src/client/generated/docs/CustomFieldValueProjectMergeByIdDto.md +29 -0
  106. src/client/generated/docs/CustomFieldValueProjectMergeByNameDto.md +32 -0
  107. src/client/generated/docs/CustomFieldValueProjectPatchDto.md +31 -0
  108. src/client/generated/docs/CustomFieldValueProjectRenameDto.md +30 -0
  109. src/client/generated/docs/CustomFieldValueWithCfDto.md +32 -0
  110. src/client/generated/docs/CustomFieldValueWithTcCountDto.md +33 -0
  111. src/client/generated/docs/CustomFieldWithValuesDto.md +30 -0
  112. src/client/generated/docs/DashboardCopyDto.md +31 -0
  113. src/client/generated/docs/DashboardCreateDto.md +31 -0
  114. src/client/generated/docs/DashboardDragAndDropDto.md +30 -0
  115. src/client/generated/docs/DashboardDto.md +34 -0
  116. src/client/generated/docs/DashboardOverviewDto.md +35 -0
  117. src/client/generated/docs/DashboardPatchDto.md +29 -0
  118. src/client/generated/docs/DashboardUpdateDto.md +30 -0
  119. src/client/generated/docs/DefaultCustomFieldValueDto.md +31 -0
  120. src/client/generated/docs/DefaultTextMarkupDocument.md +29 -0
  121. src/client/generated/docs/DefaultTextMarkupDocumentAllOfContent.md +31 -0
  122. src/client/generated/docs/DefaultWebhookSettings.md +30 -0
  123. src/client/generated/docs/DefaultWebhookSettingsAllOfSubjects.md +31 -0
  124. src/client/generated/docs/DefectBulkDto.md +30 -0
  125. src/client/generated/docs/DefectCountRowDto.md +33 -0
  126. src/client/generated/docs/DefectCreateDto.md +34 -0
  127. src/client/generated/docs/DefectDto.md +37 -0
  128. src/client/generated/docs/DefectIssueLinkDto.md +30 -0
  129. src/client/generated/docs/DefectMatcherCreateDto.md +32 -0
  130. src/client/generated/docs/DefectMatcherDto.md +37 -0
  131. src/client/generated/docs/DefectMatcherPatchDto.md +31 -0
  132. src/client/generated/docs/DefectOverviewDto.md +40 -0
  133. src/client/generated/docs/DefectPatchDto.md +31 -0
  134. src/client/generated/docs/DefectRowDto.md +32 -0
  135. src/client/generated/docs/DefectWebhook.md +29 -0
  136. src/client/generated/docs/DiffValueChangeBoolean.md +30 -0
  137. src/client/generated/docs/DiffValueChangeLong.md +30 -0
  138. src/client/generated/docs/DiffValueChangeSetLong.md +30 -0
  139. src/client/generated/docs/DiffValueChangeString.md +30 -0
  140. src/client/generated/docs/DocumentNode.md +29 -0
  141. src/client/generated/docs/EnvVarCreateDto.md +29 -0
  142. src/client/generated/docs/EnvVarDto.md +34 -0
  143. src/client/generated/docs/EnvVarMergeDto.md +30 -0
  144. src/client/generated/docs/EnvVarPatchDto.md +29 -0
  145. src/client/generated/docs/EnvVarSchemaCreateDto.md +31 -0
  146. src/client/generated/docs/EnvVarSchemaDto.md +36 -0
  147. src/client/generated/docs/EnvVarSchemaPatchDto.md +30 -0
  148. src/client/generated/docs/EnvVarValueCreateDto.md +30 -0
  149. src/client/generated/docs/EnvVarValueDto.md +31 -0
  150. src/client/generated/docs/EnvVarValuePatchDto.md +29 -0
  151. src/client/generated/docs/EnvironmentSetDto.md +29 -0
  152. src/client/generated/docs/EventType.md +16 -0
  153. src/client/generated/docs/EventTypeSettings.md +30 -0
  154. src/client/generated/docs/ExampleExportFieldMapping.md +33 -0
  155. src/client/generated/docs/ExpectedBodyStepDto.md +30 -0
  156. src/client/generated/docs/ExportFieldMappingTestCaseExportField.md +30 -0
  157. src/client/generated/docs/ExportFieldMappingTestResultExportField.md +30 -0
  158. src/client/generated/docs/ExportRequestDto.md +41 -0
  159. src/client/generated/docs/ExportStatus.md +14 -0
  160. src/client/generated/docs/ExportType.md +16 -0
  161. src/client/generated/docs/ExtFormField.md +33 -0
  162. src/client/generated/docs/ExtFormFieldCheckbox.md +30 -0
  163. src/client/generated/docs/ExtFormFieldComposite.md +30 -0
  164. src/client/generated/docs/ExtFormFieldExternalSelect.md +29 -0
  165. src/client/generated/docs/ExtFormFieldFormChoice.md +32 -0
  166. src/client/generated/docs/ExtFormFieldFormChoiceOption.md +30 -0
  167. src/client/generated/docs/ExtFormFieldList.md +30 -0
  168. src/client/generated/docs/ExtFormFieldNumber.md +31 -0
  169. src/client/generated/docs/ExtFormFieldOption.md +30 -0
  170. src/client/generated/docs/ExtFormFieldPassword.md +30 -0
  171. src/client/generated/docs/ExtFormFieldSelect.md +33 -0
  172. src/client/generated/docs/ExtFormFieldSlider.md +34 -0
  173. src/client/generated/docs/ExtFormFieldText.md +32 -0
  174. src/client/generated/docs/ExtFormFieldTextarea.md +31 -0
  175. src/client/generated/docs/ExtFormFieldUnknown.md +30 -0
  176. src/client/generated/docs/ExtIssueLink.md +33 -0
  177. src/client/generated/docs/ExtIssueType.md +30 -0
  178. src/client/generated/docs/ExtProject.md +31 -0
  179. src/client/generated/docs/ExtSelectValue.md +30 -0
  180. src/client/generated/docs/ExternalLinkDto.md +31 -0
  181. src/client/generated/docs/ExternalRunResponseDto.md +32 -0
  182. src/client/generated/docs/ExternalRunStartRequestDto.md +33 -0
  183. src/client/generated/docs/ExternalRunStopRequestDto.md +32 -0
  184. src/client/generated/docs/FileUploadResponseDto.md +29 -0
  185. src/client/generated/docs/FilterBaseSetDto.md +29 -0
  186. src/client/generated/docs/FilterCreateDto.md +34 -0
  187. src/client/generated/docs/FilterDto.md +40 -0
  188. src/client/generated/docs/FilterPatchDto.md +31 -0
  189. src/client/generated/docs/FilterTypeDto.md +14 -0
  190. src/client/generated/docs/FindAll29200Response.md +39 -0
  191. src/client/generated/docs/GlobalPermissionsDto.md +29 -0
  192. src/client/generated/docs/GlobalSettingsDto.md +29 -0
  193. src/client/generated/docs/GlobalSettingsProjectCreatePatchDto.md +29 -0
  194. src/client/generated/docs/GridPosDto.md +32 -0
  195. src/client/generated/docs/GroupBy.md +14 -0
  196. src/client/generated/docs/GroupNodeContext.md +30 -0
  197. src/client/generated/docs/IdAndNameOnlyDto.md +30 -0
  198. src/client/generated/docs/IdOnlyDto.md +29 -0
  199. src/client/generated/docs/ImportRequestDto.md +41 -0
  200. src/client/generated/docs/ImportRequestInfoDto.md +31 -0
  201. src/client/generated/docs/ImportRequestStateDto.md +16 -0
  202. src/client/generated/docs/ImportRequestTypeDto.md +10 -0
  203. src/client/generated/docs/IntegrationCreateDto.md +34 -0
  204. src/client/generated/docs/IntegrationDto.md +34 -0
  205. src/client/generated/docs/IntegrationExportCreateDto.md +39 -0
  206. src/client/generated/docs/IntegrationExportDto.md +42 -0
  207. src/client/generated/docs/IntegrationExportPatchDto.md +37 -0
  208. src/client/generated/docs/IntegrationFieldsFormDto.md +34 -0
  209. src/client/generated/docs/IntegrationFieldsFormDtoDefaultProjectFieldsInner.md +43 -0
  210. src/client/generated/docs/IntegrationInfoDto.md +33 -0
  211. src/client/generated/docs/IntegrationLinksFixedDto.md +29 -0
  212. src/client/generated/docs/IntegrationOperationTypeDto.md +30 -0
  213. src/client/generated/docs/IntegrationPatchDto.md +34 -0
  214. src/client/generated/docs/IntegrationRoutineTypeDto.md +16 -0
  215. src/client/generated/docs/IntegrationTypeDto.md +76 -0
  216. src/client/generated/docs/IntegrationValidateDto.md +32 -0
  217. src/client/generated/docs/IntegrationWebhookCreateDto.md +29 -0
  218. src/client/generated/docs/IntegrationWebhookDto.md +36 -0
  219. src/client/generated/docs/IntegrationWebhookLogDto.md +32 -0
  220. src/client/generated/docs/IntegrationWebhookPatchDto.md +29 -0
  221. src/client/generated/docs/IntegrationWebhookTokenDto.md +36 -0
  222. src/client/generated/docs/IssueCreateDto.md +30 -0
  223. src/client/generated/docs/IssueDto.md +37 -0
  224. src/client/generated/docs/IssueImportFieldMapping.md +31 -0
  225. src/client/generated/docs/IssueIntegrationExportFieldMapping.md +32 -0
  226. src/client/generated/docs/IssuePatchDto.md +29 -0
  227. src/client/generated/docs/IssueSchemaCreateDto.md +31 -0
  228. src/client/generated/docs/IssueSchemaDto.md +36 -0
  229. src/client/generated/docs/IssueSchemaPatchDto.md +30 -0
  230. src/client/generated/docs/IssueToCreateDto.md +32 -0
  231. src/client/generated/docs/ItalicMark.md +28 -0
  232. src/client/generated/docs/Job.md +33 -0
  233. src/client/generated/docs/JobCreateDto.md +32 -0
  234. src/client/generated/docs/JobDto.md +33 -0
  235. src/client/generated/docs/JobInfoDto.md +32 -0
  236. src/client/generated/docs/JobMapping.md +30 -0
  237. src/client/generated/docs/JobParameterDto.md +30 -0
  238. src/client/generated/docs/JobPatchDto.md +32 -0
  239. src/client/generated/docs/JobRerunRequestDto.md +29 -0
  240. src/client/generated/docs/JobRun.md +33 -0
  241. src/client/generated/docs/JobRunDto.md +41 -0
  242. src/client/generated/docs/JobRunRequestDto.md +35 -0
  243. src/client/generated/docs/JobRunStageDto.md +16 -0
  244. src/client/generated/docs/JobRunStatusDto.md +16 -0
  245. src/client/generated/docs/JobRunUploadInfoDto.md +29 -0
  246. src/client/generated/docs/JobTestCasesStatDto.md +30 -0
  247. src/client/generated/docs/Launch.md +32 -0
  248. src/client/generated/docs/LaunchCleanupRequest.md +31 -0
  249. src/client/generated/docs/LaunchCloseConfigDto.md +32 -0
  250. src/client/generated/docs/LaunchControllerApi.md +2025 -0
  251. src/client/generated/docs/LaunchCopyRqDto.md +34 -0
  252. src/client/generated/docs/LaunchCreateAndUploadDto.md +34 -0
  253. src/client/generated/docs/LaunchCreateDto.md +35 -0
  254. src/client/generated/docs/LaunchDiffCell.md +32 -0
  255. src/client/generated/docs/LaunchDiffMode.md +14 -0
  256. src/client/generated/docs/LaunchDiffRow.md +31 -0
  257. src/client/generated/docs/LaunchDiffStatusChangeDto.md +39 -0
  258. src/client/generated/docs/LaunchDiffTestResult.md +33 -0
  259. src/client/generated/docs/LaunchDiffTestResultDto.md +34 -0
  260. src/client/generated/docs/LaunchDto.md +39 -0
  261. src/client/generated/docs/LaunchExistingUploadDto.md +29 -0
  262. src/client/generated/docs/LaunchLiveDocConfigDto.md +30 -0
  263. src/client/generated/docs/LaunchMemberStatsDto.md +36 -0
  264. src/client/generated/docs/LaunchMergeDto.md +30 -0
  265. src/client/generated/docs/LaunchPatchDto.md +34 -0
  266. src/client/generated/docs/LaunchPdfOptions.md +38 -0
  267. src/client/generated/docs/LaunchPdfPart.md +24 -0
  268. src/client/generated/docs/LaunchPdfStructure.md +29 -0
  269. src/client/generated/docs/LaunchPreviewDto.md +45 -0
  270. src/client/generated/docs/LaunchProgressDto.md +29 -0
  271. src/client/generated/docs/LaunchRowDto.md +32 -0
  272. src/client/generated/docs/LaunchSearchControllerApi.md +152 -0
  273. src/client/generated/docs/LaunchTagCreateDto.md +29 -0
  274. src/client/generated/docs/LaunchTagDto.md +30 -0
  275. src/client/generated/docs/LaunchTagPatchDto.md +29 -0
  276. src/client/generated/docs/LaunchTestCasesAddDto.md +33 -0
  277. src/client/generated/docs/LaunchTestPlanAddDto.md +30 -0
  278. src/client/generated/docs/LaunchUploadResponseDto.md +31 -0
  279. src/client/generated/docs/LaunchVariableDto.md +30 -0
  280. src/client/generated/docs/LaunchWebhook.md +30 -0
  281. src/client/generated/docs/LineBreakParagraphNode.md +28 -0
  282. src/client/generated/docs/LinkExportFieldMapping.md +31 -0
  283. src/client/generated/docs/LinkImportFieldMapping.md +32 -0
  284. src/client/generated/docs/LinkMark.md +29 -0
  285. src/client/generated/docs/ListSelectionDto.md +30 -0
  286. src/client/generated/docs/ManualSessionRequestDto.md +30 -0
  287. src/client/generated/docs/Matcher.md +31 -0
  288. src/client/generated/docs/MemberCreateDto.md +30 -0
  289. src/client/generated/docs/MemberDto.md +31 -0
  290. src/client/generated/docs/MemberPatchDto.md +29 -0
  291. src/client/generated/docs/Metric.md +12 -0
  292. src/client/generated/docs/MfaGlobalSettingsDto.md +29 -0
  293. src/client/generated/docs/MfaGlobalSettingsPatchDto.md +29 -0
  294. src/client/generated/docs/MultiValueExportFieldMapping.md +31 -0
  295. src/client/generated/docs/MultiValueImportFieldMapping.md +30 -0
  296. src/client/generated/docs/MultiValueMapStringString.md +30 -0
  297. src/client/generated/docs/MuteCreateDto.md +32 -0
  298. src/client/generated/docs/MuteDto.md +38 -0
  299. src/client/generated/docs/NameOnlyDto.md +29 -0
  300. src/client/generated/docs/NodeType.md +12 -0
  301. src/client/generated/docs/NormalizedScenarioDto.md +34 -0
  302. src/client/generated/docs/NormalizedScenarioDtoAttachmentsValue.md +39 -0
  303. src/client/generated/docs/NormalizedScenarioStepDto.md +42 -0
  304. src/client/generated/docs/OrderedValueDtoString.md +30 -0
  305. src/client/generated/docs/PageAccessGroupDto.md +39 -0
  306. src/client/generated/docs/PageAccessGroupDtoSort.md +31 -0
  307. src/client/generated/docs/PageAccessGroupPaDto.md +39 -0
  308. src/client/generated/docs/PageAccessGroupUserDto.md +39 -0
  309. src/client/generated/docs/PageAsyncJobDto.md +39 -0
  310. src/client/generated/docs/PageCategoryDto.md +39 -0
  311. src/client/generated/docs/PageCategoryMatcherDto.md +39 -0
  312. src/client/generated/docs/PageCleanerSchemaDto.md +39 -0
  313. src/client/generated/docs/PageCommentDto.md +39 -0
  314. src/client/generated/docs/PageCustomFieldProjectDto.md +39 -0
  315. src/client/generated/docs/PageCustomFieldSchemaDto.md +39 -0
  316. src/client/generated/docs/PageCustomFieldValueWithTcCountDto.md +39 -0
  317. src/client/generated/docs/PageDashboardDto.md +39 -0
  318. src/client/generated/docs/PageDefectCountRowDto.md +39 -0
  319. src/client/generated/docs/PageDefectDto.md +39 -0
  320. src/client/generated/docs/PageDefectMatcherDto.md +39 -0
  321. src/client/generated/docs/PageDefectRowDto.md +39 -0
  322. src/client/generated/docs/PageEnvVarSchemaDto.md +39 -0
  323. src/client/generated/docs/PageExportRequestDto.md +39 -0
  324. src/client/generated/docs/PageFilterDto.md +39 -0
  325. src/client/generated/docs/PageIdAndNameOnlyDto.md +39 -0
  326. src/client/generated/docs/PageImportRequestDto.md +39 -0
  327. src/client/generated/docs/PageIntegrationDto.md +39 -0
  328. src/client/generated/docs/PageIntegrationExportDto.md +39 -0
  329. src/client/generated/docs/PageIntegrationInfoDto.md +39 -0
  330. src/client/generated/docs/PageIntegrationWebhookDto.md +39 -0
  331. src/client/generated/docs/PageIntegrationWebhookLogDto.md +39 -0
  332. src/client/generated/docs/PageIssueDto.md +39 -0
  333. src/client/generated/docs/PageIssueSchemaDto.md +39 -0
  334. src/client/generated/docs/PageJobDto.md +39 -0
  335. src/client/generated/docs/PageLaunchDiffRow.md +39 -0
  336. src/client/generated/docs/PageLaunchDto.md +39 -0
  337. src/client/generated/docs/PageLaunchMemberStatsDto.md +39 -0
  338. src/client/generated/docs/PageLaunchPreviewDto.md +39 -0
  339. src/client/generated/docs/PageLaunchRowDto.md +39 -0
  340. src/client/generated/docs/PageLaunchTagDto.md +39 -0
  341. src/client/generated/docs/PageLaunchVariableDto.md +39 -0
  342. src/client/generated/docs/PageMemberDto.md +39 -0
  343. src/client/generated/docs/PageMuteDto.md +39 -0
  344. src/client/generated/docs/PagePermissionSetDto.md +39 -0
  345. src/client/generated/docs/PageProjectCollaboratorAccessDto.md +39 -0
  346. src/client/generated/docs/PageProjectCollaboratorDto.md +39 -0
  347. src/client/generated/docs/PageProjectCustomFieldDto.md +39 -0
  348. src/client/generated/docs/PageProjectDto.md +39 -0
  349. src/client/generated/docs/PageProjectGroupAccessDto.md +39 -0
  350. src/client/generated/docs/PageProjectIntegrationDto.md +39 -0
  351. src/client/generated/docs/PageProjectSuggestDto.md +39 -0
  352. src/client/generated/docs/PageRoleSchemaDto.md +39 -0
  353. src/client/generated/docs/PageSharedStepAttachmentRowDto.md +39 -0
  354. src/client/generated/docs/PageSharedStepDto.md +39 -0
  355. src/client/generated/docs/PageStatisticWidgetItem.md +39 -0
  356. src/client/generated/docs/PageStatusDto.md +39 -0
  357. src/client/generated/docs/PageTemplateDto.md +39 -0
  358. src/client/generated/docs/PageTestCaseAttachmentRowDto.md +39 -0
  359. src/client/generated/docs/PageTestCaseAuditLogEntryDto.md +39 -0
  360. src/client/generated/docs/PageTestCaseDto.md +39 -0
  361. src/client/generated/docs/PageTestCaseExampleDto.md +39 -0
  362. src/client/generated/docs/PageTestCaseFlatDto.md +39 -0
  363. src/client/generated/docs/PageTestCaseRowDto.md +39 -0
  364. src/client/generated/docs/PageTestCaseTreeGroupDto.md +39 -0
  365. src/client/generated/docs/PageTestCaseTreeLeafDto.md +39 -0
  366. src/client/generated/docs/PageTestCaseTreeNodeDto.md +39 -0
  367. src/client/generated/docs/PageTestCaseTreeNodeDtoContentInner.md +43 -0
  368. src/client/generated/docs/PageTestFixtureResultAttachmentRowDto.md +39 -0
  369. src/client/generated/docs/PageTestKeySchemaDto.md +39 -0
  370. src/client/generated/docs/PageTestLayerDto.md +39 -0
  371. src/client/generated/docs/PageTestLayerSchemaDto.md +39 -0
  372. src/client/generated/docs/PageTestPlanDto.md +39 -0
  373. src/client/generated/docs/PageTestPlanRowDto.md +39 -0
  374. src/client/generated/docs/PageTestResultAttachmentRowDto.md +39 -0
  375. src/client/generated/docs/PageTestResultDefectMatchDto.md +39 -0
  376. src/client/generated/docs/PageTestResultDto.md +39 -0
  377. src/client/generated/docs/PageTestResultFlatDto.md +39 -0
  378. src/client/generated/docs/PageTestResultHistoryDto.md +39 -0
  379. src/client/generated/docs/PageTestResultRetriesRowDto.md +39 -0
  380. src/client/generated/docs/PageTestResultRowDto.md +39 -0
  381. src/client/generated/docs/PageTestResultTreeGroupDto.md +39 -0
  382. src/client/generated/docs/PageTestResultTreeLeafDto.md +39 -0
  383. src/client/generated/docs/PageTestResultTreeNodeDto.md +39 -0
  384. src/client/generated/docs/PageTestResultTreeNodeDtoContentInner.md +46 -0
  385. src/client/generated/docs/PageTreeDto.md +39 -0
  386. src/client/generated/docs/PageTreeDtoV2.md +39 -0
  387. src/client/generated/docs/PageTreePathDto.md +39 -0
  388. src/client/generated/docs/PageWebhookDto.md +39 -0
  389. src/client/generated/docs/PageWidgetDto.md +39 -0
  390. src/client/generated/docs/PageWorkflowDto.md +39 -0
  391. src/client/generated/docs/PageWorkflowSchemaDto.md +39 -0
  392. src/client/generated/docs/Pageable.md +34 -0
  393. src/client/generated/docs/ParagraphDocumentNode.md +30 -0
  394. src/client/generated/docs/ParagraphDocumentNodeAllOfContent.md +30 -0
  395. src/client/generated/docs/ParagraphNode.md +29 -0
  396. src/client/generated/docs/Parameter.md +30 -0
  397. src/client/generated/docs/ParameterValueDto.md +30 -0
  398. src/client/generated/docs/PermissionDto.md +16 -0
  399. src/client/generated/docs/PermissionSetCreateDto.md +30 -0
  400. src/client/generated/docs/PermissionSetDto.md +31 -0
  401. src/client/generated/docs/PermissionSetPatchDto.md +30 -0
  402. src/client/generated/docs/ProjectAccessCollaboratorAddDto.md +29 -0
  403. src/client/generated/docs/ProjectAccessGroupAddDto.md +29 -0
  404. src/client/generated/docs/ProjectCategoryAddDto.md +29 -0
  405. src/client/generated/docs/ProjectCategoryMatcherAddDto.md +29 -0
  406. src/client/generated/docs/ProjectCategoryMatcherRemoveDto.md +29 -0
  407. src/client/generated/docs/ProjectCategoryRemoveDto.md +29 -0
  408. src/client/generated/docs/ProjectCollaboratorAccessDto.md +35 -0
  409. src/client/generated/docs/ProjectCollaboratorDto.md +31 -0
  410. src/client/generated/docs/ProjectCreateDto.md +33 -0
  411. src/client/generated/docs/ProjectCustomFieldDto.md +39 -0
  412. src/client/generated/docs/ProjectDto.md +39 -0
  413. src/client/generated/docs/ProjectGroupAccessAddDto.md +30 -0
  414. src/client/generated/docs/ProjectGroupAccessDto.md +31 -0
  415. src/client/generated/docs/ProjectIntegrationCreateDto.md +32 -0
  416. src/client/generated/docs/ProjectIntegrationDto.md +36 -0
  417. src/client/generated/docs/ProjectIntegrationFieldsFormDto.md +34 -0
  418. src/client/generated/docs/ProjectIntegrationPatchDto.md +31 -0
  419. src/client/generated/docs/ProjectIntegrationValidateDto.md +31 -0
  420. src/client/generated/docs/ProjectMetricDto.md +33 -0
  421. src/client/generated/docs/ProjectPatchDto.md +33 -0
  422. src/client/generated/docs/ProjectPropertyCreateDto.md +31 -0
  423. src/client/generated/docs/ProjectPropertyDto.md +32 -0
  424. src/client/generated/docs/ProjectPropertyPatchDto.md +30 -0
  425. src/client/generated/docs/ProjectStatsDto.md +32 -0
  426. src/client/generated/docs/ProjectSuggestDto.md +32 -0
  427. src/client/generated/docs/ProjectSyncRequest.md +35 -0
  428. src/client/generated/docs/ProjectTestCaseCountDto.md +30 -0
  429. src/client/generated/docs/ResolveRequestV2Dto.md +36 -0
  430. src/client/generated/docs/Retry.md +31 -0
  431. src/client/generated/docs/RoleCreateDto.md +29 -0
  432. src/client/generated/docs/RoleDto.md +34 -0
  433. src/client/generated/docs/RoleExportFieldMapping.md +32 -0
  434. src/client/generated/docs/RoleImportFieldMapping.md +31 -0
  435. src/client/generated/docs/RolePatchDto.md +29 -0
  436. src/client/generated/docs/RoleSchemaCreateDto.md +31 -0
  437. src/client/generated/docs/RoleSchemaDto.md +36 -0
  438. src/client/generated/docs/RoleSchemaPatchDto.md +30 -0
  439. src/client/generated/docs/ScenarioExportFieldMapping.md +32 -0
  440. src/client/generated/docs/ScenarioStepCopyDto.md +31 -0
  441. src/client/generated/docs/ScenarioStepCreateDto.md +34 -0
  442. src/client/generated/docs/ScenarioStepCreatedResponseDto.md +30 -0
  443. src/client/generated/docs/ScenarioStepDto.md +29 -0
  444. src/client/generated/docs/ScenarioStepMoveDto.md +31 -0
  445. src/client/generated/docs/ScenarioStepPatchDto.md +33 -0
  446. src/client/generated/docs/SessionVariable.md +30 -0
  447. src/client/generated/docs/SharedStepAttachmentControllerApi.md +421 -0
  448. src/client/generated/docs/SharedStepAttachmentPatchDto.md +30 -0
  449. src/client/generated/docs/SharedStepAttachmentRowDto.md +33 -0
  450. src/client/generated/docs/SharedStepControllerApi.md +482 -0
  451. src/client/generated/docs/SharedStepCreateDto.md +30 -0
  452. src/client/generated/docs/SharedStepDto.md +39 -0
  453. src/client/generated/docs/SharedStepPatchDto.md +29 -0
  454. src/client/generated/docs/SharedStepScenarioControllerApi.md +635 -0
  455. src/client/generated/docs/SharedStepScenarioDto.md +29 -0
  456. src/client/generated/docs/SharedStepScenarioDtoStepsInner.md +33 -0
  457. src/client/generated/docs/SharedStepStepDto.md +29 -0
  458. src/client/generated/docs/StatisticDto.md +35 -0
  459. src/client/generated/docs/StatisticWidgetItem.md +31 -0
  460. src/client/generated/docs/Status.md +16 -0
  461. src/client/generated/docs/StatusCreateDto.md +30 -0
  462. src/client/generated/docs/StatusDto.md +35 -0
  463. src/client/generated/docs/StatusPatchDto.md +30 -0
  464. src/client/generated/docs/StrikeMark.md +28 -0
  465. src/client/generated/docs/TagImportFieldMapping.md +31 -0
  466. src/client/generated/docs/TemplateDto.md +32 -0
  467. src/client/generated/docs/TemplateOverviewDto.md +33 -0
  468. src/client/generated/docs/TestCaseAssociationDiff.md +29 -0
  469. src/client/generated/docs/TestCaseAttachmentControllerApi.md +421 -0
  470. src/client/generated/docs/TestCaseAttachmentPatchDto.md +30 -0
  471. src/client/generated/docs/TestCaseAttachmentRowDto.md +32 -0
  472. src/client/generated/docs/TestCaseAuditLogData.md +30 -0
  473. src/client/generated/docs/TestCaseAuditLogDataDiff.md +43 -0
  474. src/client/generated/docs/TestCaseAuditLogEntryDto.md +33 -0
  475. src/client/generated/docs/TestCaseBulkCfMoveStrategy.md +16 -0
  476. src/client/generated/docs/TestCaseBulkChangeProjectDtoV2.md +32 -0
  477. src/client/generated/docs/TestCaseBulkCloneDto.md +45 -0
  478. src/client/generated/docs/TestCaseBulkCloneDtoV2.md +45 -0
  479. src/client/generated/docs/TestCaseBulkControllerApi.md +1320 -0
  480. src/client/generated/docs/TestCaseBulkDragAndDropDto.md +30 -0
  481. src/client/generated/docs/TestCaseBulkDragAndDropDtoV2.md +30 -0
  482. src/client/generated/docs/TestCaseBulkDto.md +29 -0
  483. src/client/generated/docs/TestCaseBulkDtoV2.md +29 -0
  484. src/client/generated/docs/TestCaseBulkEntityIdsDto.md +30 -0
  485. src/client/generated/docs/TestCaseBulkEntityIdsDtoV2.md +30 -0
  486. src/client/generated/docs/TestCaseBulkExportCsvOptions.md +33 -0
  487. src/client/generated/docs/TestCaseBulkExportCsvOptionsMappingInner.md +39 -0
  488. src/client/generated/docs/TestCaseBulkExportPdfOptions.md +35 -0
  489. src/client/generated/docs/TestCaseBulkExternalLinkDto.md +30 -0
  490. src/client/generated/docs/TestCaseBulkIssueDto.md +30 -0
  491. src/client/generated/docs/TestCaseBulkLayerDto.md +30 -0
  492. src/client/generated/docs/TestCaseBulkMemberDto.md +30 -0
  493. src/client/generated/docs/TestCaseBulkMuteDto.md +30 -0
  494. src/client/generated/docs/TestCaseBulkNewCfvDto.md +30 -0
  495. src/client/generated/docs/TestCaseBulkProjectChangeDto.md +32 -0
  496. src/client/generated/docs/TestCaseBulkRunExistingLaunchDto.md +34 -0
  497. src/client/generated/docs/TestCaseBulkRunNewLaunchDto.md +37 -0
  498. src/client/generated/docs/TestCaseBulkStatusDto.md +31 -0
  499. src/client/generated/docs/TestCaseBulkTagDto.md +30 -0
  500. src/client/generated/docs/TestCaseBulkTestPlanCreateDto.md +31 -0
  501. src/client/generated/docs/TestCaseCfBulkDeltaDtoV2.md +30 -0
  502. src/client/generated/docs/TestCaseCfvBulkAddDto.md +30 -0
  503. src/client/generated/docs/TestCaseCloneRqDto.md +44 -0
  504. src/client/generated/docs/TestCaseControllerApi.md +934 -0
  505. src/client/generated/docs/TestCaseCountDto.md +29 -0
  506. src/client/generated/docs/TestCaseCreateV2Dto.md +45 -0
  507. src/client/generated/docs/TestCaseCsvExportOptions.md +33 -0
  508. src/client/generated/docs/TestCaseCsvImportOptions.md +37 -0
  509. src/client/generated/docs/TestCaseCsvImportOptionsMappingInner.md +37 -0
  510. src/client/generated/docs/TestCaseCsvPreviewOptions.md +38 -0
  511. src/client/generated/docs/TestCaseCustomFieldControllerApi.md +212 -0
  512. src/client/generated/docs/TestCaseDetachAutomationRqDto.md +31 -0
  513. src/client/generated/docs/TestCaseDiff.md +42 -0
  514. src/client/generated/docs/TestCaseDto.md +52 -0
  515. src/client/generated/docs/TestCaseExampleDto.md +31 -0
  516. src/client/generated/docs/TestCaseExportField.md +40 -0
  517. src/client/generated/docs/TestCaseExternalLinkBulkAddDto.md +30 -0
  518. src/client/generated/docs/TestCaseFlatDto.md +37 -0
  519. src/client/generated/docs/TestCaseFullTreeNodeDto.md +33 -0
  520. src/client/generated/docs/TestCaseImportDto.md +50 -0
  521. src/client/generated/docs/TestCaseImportField.md +38 -0
  522. src/client/generated/docs/TestCaseImportMapping.md +29 -0
  523. src/client/generated/docs/TestCaseInfo.md +30 -0
  524. src/client/generated/docs/TestCaseIssueBulkAddDto.md +30 -0
  525. src/client/generated/docs/TestCaseLastResultDto.md +33 -0
  526. src/client/generated/docs/TestCaseLayerBulkSetDto.md +30 -0
  527. src/client/generated/docs/TestCaseLightTreeNodeDto.md +32 -0
  528. src/client/generated/docs/TestCaseMemberBulkAddDto.md +30 -0
  529. src/client/generated/docs/TestCaseMuteBulkAddDto.md +30 -0
  530. src/client/generated/docs/TestCaseOverviewControllerApi.md +75 -0
  531. src/client/generated/docs/TestCaseOverviewDto.md +61 -0
  532. src/client/generated/docs/TestCaseParameterDto.md +29 -0
  533. src/client/generated/docs/TestCaseParameterValues.md +30 -0
  534. src/client/generated/docs/TestCasePatchV2Dto.md +44 -0
  535. src/client/generated/docs/TestCasePdfOptions.md +35 -0
  536. src/client/generated/docs/TestCasePdfPart.md +16 -0
  537. src/client/generated/docs/TestCaseRelationDto.md +31 -0
  538. src/client/generated/docs/TestCaseRelationTypeDto.md +22 -0
  539. src/client/generated/docs/TestCaseRowDto.md +33 -0
  540. src/client/generated/docs/TestCaseRunBulkExistingLaunchDto.md +34 -0
  541. src/client/generated/docs/TestCaseRunBulkNewLaunchDto.md +37 -0
  542. src/client/generated/docs/TestCaseRunByStats.md +32 -0
  543. src/client/generated/docs/TestCaseRunStatsRequestDto.md +30 -0
  544. src/client/generated/docs/TestCaseScenarioControllerApi.md +760 -0
  545. src/client/generated/docs/TestCaseScenarioDto.md +31 -0
  546. src/client/generated/docs/TestCaseScenarioStepDto.md +36 -0
  547. src/client/generated/docs/TestCaseScenarioV2Dto.md +29 -0
  548. src/client/generated/docs/TestCaseSearchControllerApi.md +156 -0
  549. src/client/generated/docs/TestCaseSelectionDtoV2.md +39 -0
  550. src/client/generated/docs/TestCaseStatusBulkSetDto.md +31 -0
  551. src/client/generated/docs/TestCaseStyle.md +12 -0
  552. src/client/generated/docs/TestCaseSyncFromTo.md +30 -0
  553. src/client/generated/docs/TestCaseSyncRqDto.md +41 -0
  554. src/client/generated/docs/TestCaseTagBulkAddDto.md +30 -0
  555. src/client/generated/docs/TestCaseTagControllerApi.md +144 -0
  556. src/client/generated/docs/TestCaseTestPlanBulkCreateDto.md +31 -0
  557. src/client/generated/docs/TestCaseTreeAllPathsDto.md +29 -0
  558. src/client/generated/docs/TestCaseTreeFilterCountDto.md +30 -0
  559. src/client/generated/docs/TestCaseTreeGroupAddDto.md +29 -0
  560. src/client/generated/docs/TestCaseTreeGroupDto.md +32 -0
  561. src/client/generated/docs/TestCaseTreeGroupRenameDto.md +29 -0
  562. src/client/generated/docs/TestCaseTreeLeafAddDto.md +29 -0
  563. src/client/generated/docs/TestCaseTreeLeafDto.md +37 -0
  564. src/client/generated/docs/TestCaseTreeLeafDtoV2.md +36 -0
  565. src/client/generated/docs/TestCaseTreeLeafRenameDto.md +29 -0
  566. src/client/generated/docs/TestCaseTreeNodeDto.md +31 -0
  567. src/client/generated/docs/TestCaseTreeRunStatRequestDto.md +40 -0
  568. src/client/generated/docs/TestCaseTreeSelectionDto.md +39 -0
  569. src/client/generated/docs/TestCaseTreeSelectionDtoV2.md +38 -0
  570. src/client/generated/docs/TestCaseType.md +12 -0
  571. src/client/generated/docs/TestCaseUpdateFieldDto.md +30 -0
  572. src/client/generated/docs/TestCaseUpdatePolicyDto.md +12 -0
  573. src/client/generated/docs/TestCaseUpdateSchemaCreateDto.md +31 -0
  574. src/client/generated/docs/TestCaseUpdateSchemaDto.md +32 -0
  575. src/client/generated/docs/TestCaseUpdateSchemaPatchDto.md +30 -0
  576. src/client/generated/docs/TestCaseVersionDto.md +34 -0
  577. src/client/generated/docs/TestCaseVersionPatchDto.md +30 -0
  578. src/client/generated/docs/TestCaseVersionRqDto.md +30 -0
  579. src/client/generated/docs/TestDurationCount.md +30 -0
  580. src/client/generated/docs/TestFixtureResultAttachmentPatchDto.md +30 -0
  581. src/client/generated/docs/TestFixtureResultAttachmentRowDto.md +29 -0
  582. src/client/generated/docs/TestFixtureResultTypeDto.md +12 -0
  583. src/client/generated/docs/TestFixtureResultV2Dto.md +38 -0
  584. src/client/generated/docs/TestKeyDto.md +32 -0
  585. src/client/generated/docs/TestKeyImportFieldMapping.md +31 -0
  586. src/client/generated/docs/TestKeySchemaCreateDto.md +31 -0
  587. src/client/generated/docs/TestKeySchemaDto.md +37 -0
  588. src/client/generated/docs/TestKeySchemaPatchDto.md +30 -0
  589. src/client/generated/docs/TestLayerCreateDto.md +29 -0
  590. src/client/generated/docs/TestLayerDto.md +34 -0
  591. src/client/generated/docs/TestLayerPatchDto.md +29 -0
  592. src/client/generated/docs/TestLayerSchemaCreateDto.md +31 -0
  593. src/client/generated/docs/TestLayerSchemaDto.md +36 -0
  594. src/client/generated/docs/TestLayerSchemaPatchDto.md +30 -0
  595. src/client/generated/docs/TestPlanAssignDto.md +31 -0
  596. src/client/generated/docs/TestPlanCreateDto.md +33 -0
  597. src/client/generated/docs/TestPlanDiffDto.md +30 -0
  598. src/client/generated/docs/TestPlanDto.md +39 -0
  599. src/client/generated/docs/TestPlanJobParametersDto.md +30 -0
  600. src/client/generated/docs/TestPlanJobStatDto.md +30 -0
  601. src/client/generated/docs/TestPlanMemberStatDto.md +32 -0
  602. src/client/generated/docs/TestPlanPatchDto.md +32 -0
  603. src/client/generated/docs/TestPlanRowDto.md +31 -0
  604. src/client/generated/docs/TestPlanRunRequestDto.md +33 -0
  605. src/client/generated/docs/TestPlanTreeSelectionDto.md +37 -0
  606. src/client/generated/docs/TestPlanWebhook.md +29 -0
  607. src/client/generated/docs/TestResultAttachmentPatchDto.md +30 -0
  608. src/client/generated/docs/TestResultAttachmentRowDto.md +31 -0
  609. src/client/generated/docs/TestResultAttachmentStepDto.md +34 -0
  610. src/client/generated/docs/TestResultAttachmentStepDtoAllOfAttachment.md +39 -0
  611. src/client/generated/docs/TestResultBodyStepDto.md +38 -0
  612. src/client/generated/docs/TestResultBulkAssignDto.md +30 -0
  613. src/client/generated/docs/TestResultBulkDto.md +29 -0
  614. src/client/generated/docs/TestResultBulkEntityIdsDto.md +30 -0
  615. src/client/generated/docs/TestResultBulkMuteDto.md +32 -0
  616. src/client/generated/docs/TestResultBulkRerunDto.md +32 -0
  617. src/client/generated/docs/TestResultBulkResolveDto.md +32 -0
  618. src/client/generated/docs/TestResultBulkTagDto.md +30 -0
  619. src/client/generated/docs/TestResultCreateV2Dto.md +49 -0
  620. src/client/generated/docs/TestResultCsvExportOptions.md +33 -0
  621. src/client/generated/docs/TestResultCsvExportOptionsMappingInner.md +39 -0
  622. src/client/generated/docs/TestResultDefectMatchDto.md +33 -0
  623. src/client/generated/docs/TestResultDefectMatcherDto.md +31 -0
  624. src/client/generated/docs/TestResultDto.md +69 -0
  625. src/client/generated/docs/TestResultExpectedBodyStepDto.md +36 -0
  626. src/client/generated/docs/TestResultExportField.md +52 -0
  627. src/client/generated/docs/TestResultFlatDto.md +43 -0
  628. src/client/generated/docs/TestResultGroupNode.md +32 -0
  629. src/client/generated/docs/TestResultHistoryDto.md +43 -0
  630. src/client/generated/docs/TestResultLeafNode.md +40 -0
  631. src/client/generated/docs/TestResultLinkDefectDto.md +29 -0
  632. src/client/generated/docs/TestResultMuteReason.md +31 -0
  633. src/client/generated/docs/TestResultNewDefectDto.md +33 -0
  634. src/client/generated/docs/TestResultParameterDto.md +32 -0
  635. src/client/generated/docs/TestResultPatchDto.md +39 -0
  636. src/client/generated/docs/TestResultRerunDto.md +29 -0
  637. src/client/generated/docs/TestResultRetriesRowDto.md +34 -0
  638. src/client/generated/docs/TestResultRowDto.md +34 -0
  639. src/client/generated/docs/TestResultScenarioDto.md +30 -0
  640. src/client/generated/docs/TestResultScenarioStepDto.md +45 -0
  641. src/client/generated/docs/TestResultScenarioStepParameter.md +32 -0
  642. src/client/generated/docs/TestResultScenarioV2Dto.md +29 -0
  643. src/client/generated/docs/TestResultScenarioV2DtoStepsInner.md +41 -0
  644. src/client/generated/docs/TestResultStatsDto.md +32 -0
  645. src/client/generated/docs/TestResultTree.md +35 -0
  646. src/client/generated/docs/TestResultTreeFilterCountDto.md +29 -0
  647. src/client/generated/docs/TestResultTreeGroupDto.md +32 -0
  648. src/client/generated/docs/TestResultTreeGroupDtoV2.md +30 -0
  649. src/client/generated/docs/TestResultTreeLeafDto.md +41 -0
  650. src/client/generated/docs/TestResultTreeLeafDtoV2.md +41 -0
  651. src/client/generated/docs/TestResultTreeNodeDto.md +31 -0
  652. src/client/generated/docs/TestResultTreeSelectionDto.md +38 -0
  653. src/client/generated/docs/TestSessionResponseDto.md +33 -0
  654. src/client/generated/docs/TestStatus.md +18 -0
  655. src/client/generated/docs/TestStatusCount.md +30 -0
  656. src/client/generated/docs/TestTagCreateDto.md +29 -0
  657. src/client/generated/docs/TestTagDto.md +30 -0
  658. src/client/generated/docs/TestTagPatchDto.md +29 -0
  659. src/client/generated/docs/TextColorMark.md +29 -0
  660. src/client/generated/docs/TextFillMark.md +29 -0
  661. src/client/generated/docs/TextMark.md +29 -0
  662. src/client/generated/docs/TextMarkupDocument.md +29 -0
  663. src/client/generated/docs/TextParagraphNode.md +30 -0
  664. src/client/generated/docs/TextParagraphNodeMarksInner.md +30 -0
  665. src/client/generated/docs/TrScenarioStepDto.md +29 -0
  666. src/client/generated/docs/TreeCreateDto.md +31 -0
  667. src/client/generated/docs/TreeCustomFieldProjectDto.md +33 -0
  668. src/client/generated/docs/TreeDto.md +36 -0
  669. src/client/generated/docs/TreeDtoV2.md +32 -0
  670. src/client/generated/docs/TreePatchDto.md +30 -0
  671. src/client/generated/docs/TreePathCreateDto.md +30 -0
  672. src/client/generated/docs/TreePathDto.md +32 -0
  673. src/client/generated/docs/TreePathItemDto.md +31 -0
  674. src/client/generated/docs/TreeSelectionDto.md +34 -0
  675. src/client/generated/docs/UnderlineMark.md +28 -0
  676. src/client/generated/docs/UploadAttachmentDto.md +33 -0
  677. src/client/generated/docs/UploadFixturesResultsDto.md +29 -0
  678. src/client/generated/docs/UploadLabelDto.md +30 -0
  679. src/client/generated/docs/UploadLinkDto.md +31 -0
  680. src/client/generated/docs/UploadParameterDto.md +33 -0
  681. src/client/generated/docs/UploadResultsDto.md +30 -0
  682. src/client/generated/docs/UploadResultsResponseDto.md +29 -0
  683. src/client/generated/docs/UploadTestCaseDto.md +37 -0
  684. src/client/generated/docs/UploadTestFixtureResultDto.md +37 -0
  685. src/client/generated/docs/UploadTestFixtureResultDtoStepsInner.md +39 -0
  686. src/client/generated/docs/UploadTestFixtureType.md +12 -0
  687. src/client/generated/docs/UploadTestResultAttachmentStepDto.md +33 -0
  688. src/client/generated/docs/UploadTestResultBodyStepDto.md +37 -0
  689. src/client/generated/docs/UploadTestResultDto.md +56 -0
  690. src/client/generated/docs/UploadTestResultExpectedBodyStepDto.md +35 -0
  691. src/client/generated/docs/UploadTestResultStepDto.md +29 -0
  692. src/client/generated/docs/UploadTestStatus.md +18 -0
  693. src/client/generated/docs/WebhookCreateDto.md +32 -0
  694. src/client/generated/docs/WebhookDto.md +39 -0
  695. src/client/generated/docs/WebhookPatchDto.md +31 -0
  696. src/client/generated/docs/WebhookSettings.md +29 -0
  697. src/client/generated/docs/WebhookSubject.md +30 -0
  698. src/client/generated/docs/WebhookValidateDto.md +32 -0
  699. src/client/generated/docs/WidgetCreateDto.md +33 -0
  700. src/client/generated/docs/WidgetCreateDtoOptions.md +42 -0
  701. src/client/generated/docs/WidgetDataDto.md +30 -0
  702. src/client/generated/docs/WidgetDto.md +38 -0
  703. src/client/generated/docs/WidgetOptions.md +29 -0
  704. src/client/generated/docs/WidgetOptionsAnalyticGraph.md +33 -0
  705. src/client/generated/docs/WidgetOptionsHavingSettableAql.md +30 -0
  706. src/client/generated/docs/WidgetOptionsLastLaunchPieChart.md +31 -0
  707. src/client/generated/docs/WidgetOptionsLaunchList.md +31 -0
  708. src/client/generated/docs/WidgetOptionsLaunchTrend.md +30 -0
  709. src/client/generated/docs/WidgetOptionsMarkdown.md +29 -0
  710. src/client/generated/docs/WidgetOptionsStatisticTrend.md +33 -0
  711. src/client/generated/docs/WidgetOptionsTcPieChart.md +33 -0
  712. src/client/generated/docs/WidgetOptionsTcTreeMap.md +32 -0
  713. src/client/generated/docs/WidgetOptionsTopTc.md +32 -0
  714. src/client/generated/docs/WidgetOptionsTrend.md +32 -0
  715. src/client/generated/docs/WidgetOptionsTrendV2.md +29 -0
  716. src/client/generated/docs/WidgetPatchDto.md +32 -0
  717. src/client/generated/docs/WidgetTypeDto.md +30 -0
  718. src/client/generated/docs/WorkflowCreateDto.md +30 -0
  719. src/client/generated/docs/WorkflowDto.md +35 -0
  720. src/client/generated/docs/WorkflowPatchDto.md +30 -0
  721. src/client/generated/docs/WorkflowRowDto.md +30 -0
  722. src/client/generated/docs/WorkflowSchemaCreateDto.md +31 -0
  723. src/client/generated/docs/WorkflowSchemaDto.md +36 -0
  724. src/client/generated/docs/WorkflowSchemaPatchDto.md +30 -0
  725. src/client/generated/exceptions.py +219 -0
  726. src/client/generated/models/__init__.py +699 -0
  727. src/client/generated/models/access_group_bulk_dto.py +91 -0
  728. src/client/generated/models/access_group_create_dto.py +108 -0
  729. src/client/generated/models/access_group_dto.py +103 -0
  730. src/client/generated/models/access_group_pa_dto.py +95 -0
  731. src/client/generated/models/access_group_patch_dto.py +107 -0
  732. src/client/generated/models/access_group_project_access_dto.py +89 -0
  733. src/client/generated/models/access_group_projects_add_dto.py +96 -0
  734. src/client/generated/models/access_group_user_dto.py +87 -0
  735. src/client/generated/models/access_group_users_add_dto.py +88 -0
  736. src/client/generated/models/allowed_role_dto.py +37 -0
  737. src/client/generated/models/analytic_automation_trend_dto.py +95 -0
  738. src/client/generated/models/analytic_dto.py +105 -0
  739. src/client/generated/models/analytic_interval.py +39 -0
  740. src/client/generated/models/analytic_launch_duration_histogram_dto.py +97 -0
  741. src/client/generated/models/analytic_mute_trend_dto.py +89 -0
  742. src/client/generated/models/analytic_tc_automation_count_dto.py +89 -0
  743. src/client/generated/models/analytic_tc_status_count_dto.py +93 -0
  744. src/client/generated/models/analytic_tr_by_status_trend_dto.py +95 -0
  745. src/client/generated/models/aql_validate_response_dto.py +89 -0
  746. src/client/generated/models/assign_request_dto.py +88 -0
  747. src/client/generated/models/async_job_dto.py +96 -0
  748. src/client/generated/models/async_job_status_dto.py +40 -0
  749. src/client/generated/models/async_job_step_dto.py +100 -0
  750. src/client/generated/models/async_job_step_status_dto.py +39 -0
  751. src/client/generated/models/async_job_with_steps_dto.py +106 -0
  752. src/client/generated/models/attachment_row.py +117 -0
  753. src/client/generated/models/attachment_step_dto.py +89 -0
  754. src/client/generated/models/attrs.py +87 -0
  755. src/client/generated/models/audit_action_type_dto.py +38 -0
  756. src/client/generated/models/blob_storage_stats.py +91 -0
  757. src/client/generated/models/blob_storage_update_stats.py +95 -0
  758. src/client/generated/models/body_step_dto.py +95 -0
  759. src/client/generated/models/bold_mark.py +87 -0
  760. src/client/generated/models/business_metric_dto.py +89 -0
  761. src/client/generated/models/category_create_dto.py +94 -0
  762. src/client/generated/models/category_dto.py +103 -0
  763. src/client/generated/models/category_matcher_create_dto.py +100 -0
  764. src/client/generated/models/category_matcher_dto.py +109 -0
  765. src/client/generated/models/category_matcher_patch_dto.py +97 -0
  766. src/client/generated/models/category_patch_dto.py +91 -0
  767. src/client/generated/models/cfv_merge_to_existing_global_value_dto.py +89 -0
  768. src/client/generated/models/cfv_merge_to_new_global_value_dto.py +94 -0
  769. src/client/generated/models/ci.py +89 -0
  770. src/client/generated/models/cleaner_schema_create_dto.py +95 -0
  771. src/client/generated/models/cleaner_schema_dto.py +105 -0
  772. src/client/generated/models/cleaner_schema_patch_dto.py +93 -0
  773. src/client/generated/models/cleaner_schema_target_dto.py +38 -0
  774. src/client/generated/models/code_block_document_node.py +103 -0
  775. src/client/generated/models/code_mark.py +87 -0
  776. src/client/generated/models/comment_create_dto.py +90 -0
  777. src/client/generated/models/comment_dto.py +105 -0
  778. src/client/generated/models/comment_patch_dto.py +87 -0
  779. src/client/generated/models/create_launch_event.py +93 -0
  780. src/client/generated/models/csv_import_options.py +95 -0
  781. src/client/generated/models/custom_field_bulk_add_to_projects_dto.py +89 -0
  782. src/client/generated/models/custom_field_bulk_archive_dto.py +89 -0
  783. src/client/generated/models/custom_field_create_dto.py +92 -0
  784. src/client/generated/models/custom_field_dto.py +107 -0
  785. src/client/generated/models/custom_field_export_field_mapping.py +98 -0
  786. src/client/generated/models/custom_field_import_field_mapping.py +94 -0
  787. src/client/generated/models/custom_field_merge_dto.py +89 -0
  788. src/client/generated/models/custom_field_patch_dto.py +93 -0
  789. src/client/generated/models/custom_field_project_count_dto.py +89 -0
  790. src/client/generated/models/custom_field_project_dto.py +113 -0
  791. src/client/generated/models/custom_field_project_patch_dto.py +91 -0
  792. src/client/generated/models/custom_field_project_with_values_dto.py +101 -0
  793. src/client/generated/models/custom_field_raw_dto.py +99 -0
  794. src/client/generated/models/custom_field_schema_count_dto.py +89 -0
  795. src/client/generated/models/custom_field_schema_create_dto.py +92 -0
  796. src/client/generated/models/custom_field_schema_dto.py +105 -0
  797. src/client/generated/models/custom_field_schema_patch_dto.py +89 -0
  798. src/client/generated/models/custom_field_value_bulk_delete_dto.py +89 -0
  799. src/client/generated/models/custom_field_value_bulk_merge_dto.py +96 -0
  800. src/client/generated/models/custom_field_value_dto.py +89 -0
  801. src/client/generated/models/custom_field_value_patch_dto.py +91 -0
  802. src/client/generated/models/custom_field_value_project_create_dto.py +98 -0
  803. src/client/generated/models/custom_field_value_project_merge_by_id_dto.py +87 -0
  804. src/client/generated/models/custom_field_value_project_merge_by_name_dto.py +94 -0
  805. src/client/generated/models/custom_field_value_project_patch_dto.py +91 -0
  806. src/client/generated/models/custom_field_value_project_rename_dto.py +90 -0
  807. src/client/generated/models/custom_field_value_with_cf_dto.py +97 -0
  808. src/client/generated/models/custom_field_value_with_tc_count_dto.py +99 -0
  809. src/client/generated/models/custom_field_with_values_dto.py +101 -0
  810. src/client/generated/models/dashboard_copy_dto.py +91 -0
  811. src/client/generated/models/dashboard_create_dto.py +91 -0
  812. src/client/generated/models/dashboard_drag_and_drop_dto.py +89 -0
  813. src/client/generated/models/dashboard_dto.py +97 -0
  814. src/client/generated/models/dashboard_overview_dto.py +107 -0
  815. src/client/generated/models/dashboard_patch_dto.py +87 -0
  816. src/client/generated/models/dashboard_update_dto.py +89 -0
  817. src/client/generated/models/default_custom_field_value_dto.py +91 -0
  818. src/client/generated/models/default_text_markup_document.py +97 -0
  819. src/client/generated/models/default_text_markup_document_all_of_content.py +140 -0
  820. src/client/generated/models/default_webhook_settings.py +100 -0
  821. src/client/generated/models/default_webhook_settings_all_of_subjects.py +151 -0
  822. src/client/generated/models/defect_bulk_dto.py +93 -0
  823. src/client/generated/models/defect_count_row_dto.py +99 -0
  824. src/client/generated/models/defect_create_dto.py +110 -0
  825. src/client/generated/models/defect_dto.py +107 -0
  826. src/client/generated/models/defect_issue_link_dto.py +90 -0
  827. src/client/generated/models/defect_matcher_create_dto.py +94 -0
  828. src/client/generated/models/defect_matcher_dto.py +103 -0
  829. src/client/generated/models/defect_matcher_patch_dto.py +91 -0
  830. src/client/generated/models/defect_overview_dto.py +120 -0
  831. src/client/generated/models/defect_patch_dto.py +91 -0
  832. src/client/generated/models/defect_row_dto.py +97 -0
  833. src/client/generated/models/defect_webhook.py +98 -0
  834. src/client/generated/models/diff_value_change_boolean.py +89 -0
  835. src/client/generated/models/diff_value_change_long.py +89 -0
  836. src/client/generated/models/diff_value_change_set_long.py +89 -0
  837. src/client/generated/models/diff_value_change_string.py +89 -0
  838. src/client/generated/models/document_node.py +110 -0
  839. src/client/generated/models/env_var_create_dto.py +88 -0
  840. src/client/generated/models/env_var_dto.py +97 -0
  841. src/client/generated/models/env_var_merge_dto.py +89 -0
  842. src/client/generated/models/env_var_patch_dto.py +87 -0
  843. src/client/generated/models/env_var_schema_create_dto.py +92 -0
  844. src/client/generated/models/env_var_schema_dto.py +105 -0
  845. src/client/generated/models/env_var_schema_patch_dto.py +89 -0
  846. src/client/generated/models/env_var_value_create_dto.py +94 -0
  847. src/client/generated/models/env_var_value_dto.py +95 -0
  848. src/client/generated/models/env_var_value_patch_dto.py +87 -0
  849. src/client/generated/models/environment_set_dto.py +95 -0
  850. src/client/generated/models/event_type.py +39 -0
  851. src/client/generated/models/event_type_settings.py +90 -0
  852. src/client/generated/models/example_export_field_mapping.py +100 -0
  853. src/client/generated/models/expected_body_step_dto.py +95 -0
  854. src/client/generated/models/export_field_mapping_test_case_export_field.py +90 -0
  855. src/client/generated/models/export_field_mapping_test_result_export_field.py +90 -0
  856. src/client/generated/models/export_request_dto.py +113 -0
  857. src/client/generated/models/export_status.py +38 -0
  858. src/client/generated/models/export_type.py +39 -0
  859. src/client/generated/models/ext_form_field.py +144 -0
  860. src/client/generated/models/ext_form_field_checkbox.py +95 -0
  861. src/client/generated/models/ext_form_field_composite.py +95 -0
  862. src/client/generated/models/ext_form_field_external_select.py +93 -0
  863. src/client/generated/models/ext_form_field_form_choice.py +107 -0
  864. src/client/generated/models/ext_form_field_form_choice_option.py +89 -0
  865. src/client/generated/models/ext_form_field_list.py +95 -0
  866. src/client/generated/models/ext_form_field_number.py +97 -0
  867. src/client/generated/models/ext_form_field_option.py +89 -0
  868. src/client/generated/models/ext_form_field_password.py +95 -0
  869. src/client/generated/models/ext_form_field_select.py +109 -0
  870. src/client/generated/models/ext_form_field_slider.py +103 -0
  871. src/client/generated/models/ext_form_field_text.py +99 -0
  872. src/client/generated/models/ext_form_field_textarea.py +97 -0
  873. src/client/generated/models/ext_form_field_unknown.py +95 -0
  874. src/client/generated/models/ext_issue_link.py +95 -0
  875. src/client/generated/models/ext_issue_type.py +89 -0
  876. src/client/generated/models/ext_project.py +91 -0
  877. src/client/generated/models/ext_select_value.py +89 -0
  878. src/client/generated/models/external_link_dto.py +91 -0
  879. src/client/generated/models/external_run_response_dto.py +93 -0
  880. src/client/generated/models/external_run_start_request_dto.py +111 -0
  881. src/client/generated/models/external_run_stop_request_dto.py +95 -0
  882. src/client/generated/models/file_upload_response_dto.py +87 -0
  883. src/client/generated/models/filter_base_set_dto.py +87 -0
  884. src/client/generated/models/filter_create_dto.py +98 -0
  885. src/client/generated/models/filter_dto.py +110 -0
  886. src/client/generated/models/filter_patch_dto.py +91 -0
  887. src/client/generated/models/filter_type_dto.py +38 -0
  888. src/client/generated/models/find_all29200_response.py +137 -0
  889. src/client/generated/models/global_permissions_dto.py +87 -0
  890. src/client/generated/models/global_settings_dto.py +88 -0
  891. src/client/generated/models/global_settings_project_create_patch_dto.py +88 -0
  892. src/client/generated/models/grid_pos_dto.py +93 -0
  893. src/client/generated/models/group_by.py +38 -0
  894. src/client/generated/models/group_node_context.py +89 -0
  895. src/client/generated/models/id_and_name_only_dto.py +89 -0
  896. src/client/generated/models/id_only_dto.py +87 -0
  897. src/client/generated/models/import_request_dto.py +113 -0
  898. src/client/generated/models/import_request_info_dto.py +106 -0
  899. src/client/generated/models/import_request_state_dto.py +39 -0
  900. src/client/generated/models/import_request_type_dto.py +36 -0
  901. src/client/generated/models/integration_create_dto.py +113 -0
  902. src/client/generated/models/integration_dto.py +101 -0
  903. src/client/generated/models/integration_export_create_dto.py +112 -0
  904. src/client/generated/models/integration_export_dto.py +118 -0
  905. src/client/generated/models/integration_export_patch_dto.py +108 -0
  906. src/client/generated/models/integration_fields_form_dto.py +119 -0
  907. src/client/generated/models/integration_fields_form_dto_default_project_fields_inner.py +277 -0
  908. src/client/generated/models/integration_info_dto.py +98 -0
  909. src/client/generated/models/integration_links_fixed_dto.py +87 -0
  910. src/client/generated/models/integration_operation_type_dto.py +46 -0
  911. src/client/generated/models/integration_patch_dto.py +112 -0
  912. src/client/generated/models/integration_routine_type_dto.py +39 -0
  913. src/client/generated/models/integration_type_dto.py +69 -0
  914. src/client/generated/models/integration_validate_dto.py +109 -0
  915. src/client/generated/models/integration_webhook_create_dto.py +87 -0
  916. src/client/generated/models/integration_webhook_dto.py +101 -0
  917. src/client/generated/models/integration_webhook_log_dto.py +93 -0
  918. src/client/generated/models/integration_webhook_patch_dto.py +87 -0
  919. src/client/generated/models/integration_webhook_token_dto.py +101 -0
  920. src/client/generated/models/issue_create_dto.py +90 -0
  921. src/client/generated/models/issue_dto.py +104 -0
  922. src/client/generated/models/issue_import_field_mapping.py +94 -0
  923. src/client/generated/models/issue_integration_export_field_mapping.py +98 -0
  924. src/client/generated/models/issue_patch_dto.py +87 -0
  925. src/client/generated/models/issue_schema_create_dto.py +92 -0
  926. src/client/generated/models/issue_schema_dto.py +101 -0
  927. src/client/generated/models/issue_schema_patch_dto.py +89 -0
  928. src/client/generated/models/issue_to_create_dto.py +98 -0
  929. src/client/generated/models/italic_mark.py +87 -0
  930. src/client/generated/models/job.py +103 -0
  931. src/client/generated/models/job_create_dto.py +93 -0
  932. src/client/generated/models/job_dto.py +104 -0
  933. src/client/generated/models/job_info_dto.py +94 -0
  934. src/client/generated/models/job_mapping.py +89 -0
  935. src/client/generated/models/job_parameter_dto.py +89 -0
  936. src/client/generated/models/job_patch_dto.py +101 -0
  937. src/client/generated/models/job_rerun_request_dto.py +87 -0
  938. src/client/generated/models/job_run.py +103 -0
  939. src/client/generated/models/job_run_dto.py +117 -0
  940. src/client/generated/models/job_run_request_dto.py +144 -0
  941. src/client/generated/models/job_run_stage_dto.py +39 -0
  942. src/client/generated/models/job_run_status_dto.py +39 -0
  943. src/client/generated/models/job_run_upload_info_dto.py +95 -0
  944. src/client/generated/models/job_test_cases_stat_dto.py +93 -0
  945. src/client/generated/models/launch.py +93 -0
  946. src/client/generated/models/launch_cleanup_request.py +94 -0
  947. src/client/generated/models/launch_close_config_dto.py +93 -0
  948. src/client/generated/models/launch_copy_rq_dto.py +129 -0
  949. src/client/generated/models/launch_create_and_upload_dto.py +130 -0
  950. src/client/generated/models/launch_create_dto.py +123 -0
  951. src/client/generated/models/launch_diff_cell.py +102 -0
  952. src/client/generated/models/launch_diff_mode.py +38 -0
  953. src/client/generated/models/launch_diff_row.py +99 -0
  954. src/client/generated/models/launch_diff_status_change_dto.py +108 -0
  955. src/client/generated/models/launch_diff_test_result.py +96 -0
  956. src/client/generated/models/launch_diff_test_result_dto.py +98 -0
  957. src/client/generated/models/launch_dto.py +131 -0
  958. src/client/generated/models/launch_existing_upload_dto.py +95 -0
  959. src/client/generated/models/launch_live_doc_config_dto.py +89 -0
  960. src/client/generated/models/launch_member_stats_dto.py +109 -0
  961. src/client/generated/models/launch_merge_dto.py +89 -0
  962. src/client/generated/models/launch_patch_dto.py +121 -0
  963. src/client/generated/models/launch_pdf_options.py +106 -0
  964. src/client/generated/models/launch_pdf_part.py +43 -0
  965. src/client/generated/models/launch_pdf_structure.py +88 -0
  966. src/client/generated/models/launch_preview_dto.py +167 -0
  967. src/client/generated/models/launch_progress_dto.py +87 -0
  968. src/client/generated/models/launch_row_dto.py +101 -0
  969. src/client/generated/models/launch_tag_create_dto.py +88 -0
  970. src/client/generated/models/launch_tag_dto.py +89 -0
  971. src/client/generated/models/launch_tag_patch_dto.py +87 -0
  972. src/client/generated/models/launch_test_cases_add_dto.py +123 -0
  973. src/client/generated/models/launch_test_plan_add_dto.py +97 -0
  974. src/client/generated/models/launch_upload_response_dto.py +91 -0
  975. src/client/generated/models/launch_variable_dto.py +89 -0
  976. src/client/generated/models/launch_webhook.py +100 -0
  977. src/client/generated/models/line_break_paragraph_node.py +87 -0
  978. src/client/generated/models/link_export_field_mapping.py +96 -0
  979. src/client/generated/models/link_import_field_mapping.py +96 -0
  980. src/client/generated/models/link_mark.py +93 -0
  981. src/client/generated/models/list_selection_dto.py +89 -0
  982. src/client/generated/models/manual_session_request_dto.py +97 -0
  983. src/client/generated/models/matcher.py +91 -0
  984. src/client/generated/models/member_create_dto.py +94 -0
  985. src/client/generated/models/member_dto.py +95 -0
  986. src/client/generated/models/member_patch_dto.py +87 -0
  987. src/client/generated/models/metric.py +37 -0
  988. src/client/generated/models/mfa_global_settings_dto.py +87 -0
  989. src/client/generated/models/mfa_global_settings_patch_dto.py +87 -0
  990. src/client/generated/models/multi_value_export_field_mapping.py +96 -0
  991. src/client/generated/models/multi_value_import_field_mapping.py +92 -0
  992. src/client/generated/models/multi_value_map_string_string.py +102 -0
  993. src/client/generated/models/mute_create_dto.py +101 -0
  994. src/client/generated/models/mute_dto.py +113 -0
  995. src/client/generated/models/name_only_dto.py +88 -0
  996. src/client/generated/models/node_type.py +37 -0
  997. src/client/generated/models/normalized_scenario_dto.py +162 -0
  998. src/client/generated/models/normalized_scenario_dto_attachments_value.py +154 -0
  999. src/client/generated/models/normalized_scenario_step_dto.py +117 -0
  1000. src/client/generated/models/ordered_value_dto_string.py +89 -0
  1001. src/client/generated/models/page_access_group_dto.py +123 -0
  1002. src/client/generated/models/page_access_group_dto_sort.py +91 -0
  1003. src/client/generated/models/page_access_group_pa_dto.py +123 -0
  1004. src/client/generated/models/page_access_group_user_dto.py +123 -0
  1005. src/client/generated/models/page_async_job_dto.py +123 -0
  1006. src/client/generated/models/page_category_dto.py +123 -0
  1007. src/client/generated/models/page_category_matcher_dto.py +123 -0
  1008. src/client/generated/models/page_cleaner_schema_dto.py +123 -0
  1009. src/client/generated/models/page_comment_dto.py +123 -0
  1010. src/client/generated/models/page_custom_field_project_dto.py +123 -0
  1011. src/client/generated/models/page_custom_field_schema_dto.py +123 -0
  1012. src/client/generated/models/page_custom_field_value_with_tc_count_dto.py +123 -0
  1013. src/client/generated/models/page_dashboard_dto.py +123 -0
  1014. src/client/generated/models/page_defect_count_row_dto.py +123 -0
  1015. src/client/generated/models/page_defect_dto.py +123 -0
  1016. src/client/generated/models/page_defect_matcher_dto.py +123 -0
  1017. src/client/generated/models/page_defect_row_dto.py +123 -0
  1018. src/client/generated/models/page_env_var_schema_dto.py +123 -0
  1019. src/client/generated/models/page_export_request_dto.py +123 -0
  1020. src/client/generated/models/page_filter_dto.py +123 -0
  1021. src/client/generated/models/page_id_and_name_only_dto.py +123 -0
  1022. src/client/generated/models/page_import_request_dto.py +123 -0
  1023. src/client/generated/models/page_integration_dto.py +123 -0
  1024. src/client/generated/models/page_integration_export_dto.py +123 -0
  1025. src/client/generated/models/page_integration_info_dto.py +123 -0
  1026. src/client/generated/models/page_integration_webhook_dto.py +123 -0
  1027. src/client/generated/models/page_integration_webhook_log_dto.py +123 -0
  1028. src/client/generated/models/page_issue_dto.py +123 -0
  1029. src/client/generated/models/page_issue_schema_dto.py +123 -0
  1030. src/client/generated/models/page_job_dto.py +123 -0
  1031. src/client/generated/models/page_launch_diff_row.py +123 -0
  1032. src/client/generated/models/page_launch_dto.py +123 -0
  1033. src/client/generated/models/page_launch_member_stats_dto.py +123 -0
  1034. src/client/generated/models/page_launch_preview_dto.py +123 -0
  1035. src/client/generated/models/page_launch_row_dto.py +123 -0
  1036. src/client/generated/models/page_launch_tag_dto.py +123 -0
  1037. src/client/generated/models/page_launch_variable_dto.py +123 -0
  1038. src/client/generated/models/page_member_dto.py +123 -0
  1039. src/client/generated/models/page_mute_dto.py +123 -0
  1040. src/client/generated/models/page_permission_set_dto.py +123 -0
  1041. src/client/generated/models/page_project_collaborator_access_dto.py +123 -0
  1042. src/client/generated/models/page_project_collaborator_dto.py +123 -0
  1043. src/client/generated/models/page_project_custom_field_dto.py +123 -0
  1044. src/client/generated/models/page_project_dto.py +123 -0
  1045. src/client/generated/models/page_project_group_access_dto.py +123 -0
  1046. src/client/generated/models/page_project_integration_dto.py +123 -0
  1047. src/client/generated/models/page_project_suggest_dto.py +123 -0
  1048. src/client/generated/models/page_role_schema_dto.py +123 -0
  1049. src/client/generated/models/page_shared_step_attachment_row_dto.py +123 -0
  1050. src/client/generated/models/page_shared_step_dto.py +123 -0
  1051. src/client/generated/models/page_statistic_widget_item.py +123 -0
  1052. src/client/generated/models/page_status_dto.py +123 -0
  1053. src/client/generated/models/page_template_dto.py +123 -0
  1054. src/client/generated/models/page_test_case_attachment_row_dto.py +123 -0
  1055. src/client/generated/models/page_test_case_audit_log_entry_dto.py +123 -0
  1056. src/client/generated/models/page_test_case_dto.py +123 -0
  1057. src/client/generated/models/page_test_case_example_dto.py +123 -0
  1058. src/client/generated/models/page_test_case_flat_dto.py +123 -0
  1059. src/client/generated/models/page_test_case_row_dto.py +123 -0
  1060. src/client/generated/models/page_test_case_tree_group_dto.py +123 -0
  1061. src/client/generated/models/page_test_case_tree_leaf_dto.py +123 -0
  1062. src/client/generated/models/page_test_case_tree_node_dto.py +123 -0
  1063. src/client/generated/models/page_test_case_tree_node_dto_content_inner.py +140 -0
  1064. src/client/generated/models/page_test_fixture_result_attachment_row_dto.py +123 -0
  1065. src/client/generated/models/page_test_key_schema_dto.py +123 -0
  1066. src/client/generated/models/page_test_layer_dto.py +123 -0
  1067. src/client/generated/models/page_test_layer_schema_dto.py +123 -0
  1068. src/client/generated/models/page_test_plan_dto.py +123 -0
  1069. src/client/generated/models/page_test_plan_row_dto.py +123 -0
  1070. src/client/generated/models/page_test_result_attachment_row_dto.py +123 -0
  1071. src/client/generated/models/page_test_result_defect_match_dto.py +123 -0
  1072. src/client/generated/models/page_test_result_dto.py +123 -0
  1073. src/client/generated/models/page_test_result_flat_dto.py +123 -0
  1074. src/client/generated/models/page_test_result_history_dto.py +123 -0
  1075. src/client/generated/models/page_test_result_retries_row_dto.py +123 -0
  1076. src/client/generated/models/page_test_result_row_dto.py +123 -0
  1077. src/client/generated/models/page_test_result_tree_group_dto.py +123 -0
  1078. src/client/generated/models/page_test_result_tree_leaf_dto.py +123 -0
  1079. src/client/generated/models/page_test_result_tree_node_dto.py +123 -0
  1080. src/client/generated/models/page_test_result_tree_node_dto_content_inner.py +140 -0
  1081. src/client/generated/models/page_tree_dto.py +123 -0
  1082. src/client/generated/models/page_tree_dto_v2.py +123 -0
  1083. src/client/generated/models/page_tree_path_dto.py +123 -0
  1084. src/client/generated/models/page_webhook_dto.py +123 -0
  1085. src/client/generated/models/page_widget_dto.py +123 -0
  1086. src/client/generated/models/page_workflow_dto.py +123 -0
  1087. src/client/generated/models/page_workflow_schema_dto.py +123 -0
  1088. src/client/generated/models/pageable.py +101 -0
  1089. src/client/generated/models/paragraph_document_node.py +103 -0
  1090. src/client/generated/models/paragraph_document_node_all_of_content.py +137 -0
  1091. src/client/generated/models/paragraph_node.py +107 -0
  1092. src/client/generated/models/parameter.py +89 -0
  1093. src/client/generated/models/parameter_value_dto.py +89 -0
  1094. src/client/generated/models/permission_dto.py +39 -0
  1095. src/client/generated/models/permission_set_create_dto.py +91 -0
  1096. src/client/generated/models/permission_set_dto.py +92 -0
  1097. src/client/generated/models/permission_set_patch_dto.py +90 -0
  1098. src/client/generated/models/project_access_collaborator_add_dto.py +96 -0
  1099. src/client/generated/models/project_access_group_add_dto.py +96 -0
  1100. src/client/generated/models/project_category_add_dto.py +87 -0
  1101. src/client/generated/models/project_category_matcher_add_dto.py +87 -0
  1102. src/client/generated/models/project_category_matcher_remove_dto.py +87 -0
  1103. src/client/generated/models/project_category_remove_dto.py +87 -0
  1104. src/client/generated/models/project_collaborator_access_dto.py +107 -0
  1105. src/client/generated/models/project_collaborator_dto.py +91 -0
  1106. src/client/generated/models/project_create_dto.py +95 -0
  1107. src/client/generated/models/project_custom_field_dto.py +107 -0
  1108. src/client/generated/models/project_dto.py +107 -0
  1109. src/client/generated/models/project_group_access_add_dto.py +89 -0
  1110. src/client/generated/models/project_group_access_dto.py +95 -0
  1111. src/client/generated/models/project_integration_create_dto.py +103 -0
  1112. src/client/generated/models/project_integration_dto.py +110 -0
  1113. src/client/generated/models/project_integration_fields_form_dto.py +112 -0
  1114. src/client/generated/models/project_integration_patch_dto.py +101 -0
  1115. src/client/generated/models/project_integration_validate_dto.py +101 -0
  1116. src/client/generated/models/project_metric_dto.py +95 -0
  1117. src/client/generated/models/project_patch_dto.py +95 -0
  1118. src/client/generated/models/project_property_create_dto.py +92 -0
  1119. src/client/generated/models/project_property_dto.py +93 -0
  1120. src/client/generated/models/project_property_patch_dto.py +89 -0
  1121. src/client/generated/models/project_stats_dto.py +93 -0
  1122. src/client/generated/models/project_suggest_dto.py +93 -0
  1123. src/client/generated/models/project_sync_request.py +104 -0
  1124. src/client/generated/models/project_test_case_count_dto.py +89 -0
  1125. src/client/generated/models/resolve_request_v2_dto.py +106 -0
  1126. src/client/generated/models/retry.py +92 -0
  1127. src/client/generated/models/role_create_dto.py +88 -0
  1128. src/client/generated/models/role_dto.py +97 -0
  1129. src/client/generated/models/role_export_field_mapping.py +98 -0
  1130. src/client/generated/models/role_import_field_mapping.py +94 -0
  1131. src/client/generated/models/role_patch_dto.py +87 -0
  1132. src/client/generated/models/role_schema_create_dto.py +91 -0
  1133. src/client/generated/models/role_schema_dto.py +105 -0
  1134. src/client/generated/models/role_schema_patch_dto.py +89 -0
  1135. src/client/generated/models/scenario_export_field_mapping.py +98 -0
  1136. src/client/generated/models/scenario_step_copy_dto.py +91 -0
  1137. src/client/generated/models/scenario_step_create_dto.py +101 -0
  1138. src/client/generated/models/scenario_step_created_response_dto.py +93 -0
  1139. src/client/generated/models/scenario_step_dto.py +116 -0
  1140. src/client/generated/models/scenario_step_move_dto.py +91 -0
  1141. src/client/generated/models/scenario_step_patch_dto.py +99 -0
  1142. src/client/generated/models/session_variable.py +89 -0
  1143. src/client/generated/models/shared_step_attachment_patch_dto.py +89 -0
  1144. src/client/generated/models/shared_step_attachment_row_dto.py +95 -0
  1145. src/client/generated/models/shared_step_create_dto.py +89 -0
  1146. src/client/generated/models/shared_step_dto.py +107 -0
  1147. src/client/generated/models/shared_step_patch_dto.py +87 -0
  1148. src/client/generated/models/shared_step_scenario_dto.py +95 -0
  1149. src/client/generated/models/shared_step_scenario_dto_steps_inner.py +165 -0
  1150. src/client/generated/models/shared_step_step_dto.py +89 -0
  1151. src/client/generated/models/statistic_dto.py +99 -0
  1152. src/client/generated/models/statistic_widget_item.py +99 -0
  1153. src/client/generated/models/status.py +39 -0
  1154. src/client/generated/models/status_create_dto.py +90 -0
  1155. src/client/generated/models/status_dto.py +99 -0
  1156. src/client/generated/models/status_patch_dto.py +89 -0
  1157. src/client/generated/models/strike_mark.py +87 -0
  1158. src/client/generated/models/tag_import_field_mapping.py +94 -0
  1159. src/client/generated/models/template_dto.py +93 -0
  1160. src/client/generated/models/template_overview_dto.py +103 -0
  1161. src/client/generated/models/test_case_association_diff.py +91 -0
  1162. src/client/generated/models/test_case_attachment_patch_dto.py +89 -0
  1163. src/client/generated/models/test_case_attachment_row_dto.py +99 -0
  1164. src/client/generated/models/test_case_audit_log_data.py +93 -0
  1165. src/client/generated/models/test_case_audit_log_data_diff.py +137 -0
  1166. src/client/generated/models/test_case_audit_log_entry_dto.py +104 -0
  1167. src/client/generated/models/test_case_bulk_cf_move_strategy.py +39 -0
  1168. src/client/generated/models/test_case_bulk_change_project_dto_v2.py +98 -0
  1169. src/client/generated/models/test_case_bulk_clone_dto.py +124 -0
  1170. src/client/generated/models/test_case_bulk_clone_dto_v2.py +124 -0
  1171. src/client/generated/models/test_case_bulk_drag_and_drop_dto.py +93 -0
  1172. src/client/generated/models/test_case_bulk_drag_and_drop_dto_v2.py +93 -0
  1173. src/client/generated/models/test_case_bulk_dto.py +91 -0
  1174. src/client/generated/models/test_case_bulk_dto_v2.py +91 -0
  1175. src/client/generated/models/test_case_bulk_entity_ids_dto.py +94 -0
  1176. src/client/generated/models/test_case_bulk_entity_ids_dto_v2.py +94 -0
  1177. src/client/generated/models/test_case_bulk_export_csv_options.py +107 -0
  1178. src/client/generated/models/test_case_bulk_export_csv_options_mapping_inner.py +224 -0
  1179. src/client/generated/models/test_case_bulk_export_pdf_options.py +104 -0
  1180. src/client/generated/models/test_case_bulk_external_link_dto.py +102 -0
  1181. src/client/generated/models/test_case_bulk_issue_dto.py +102 -0
  1182. src/client/generated/models/test_case_bulk_layer_dto.py +93 -0
  1183. src/client/generated/models/test_case_bulk_member_dto.py +102 -0
  1184. src/client/generated/models/test_case_bulk_mute_dto.py +97 -0
  1185. src/client/generated/models/test_case_bulk_new_cfv_dto.py +102 -0
  1186. src/client/generated/models/test_case_bulk_project_change_dto.py +98 -0
  1187. src/client/generated/models/test_case_bulk_run_existing_launch_dto.py +125 -0
  1188. src/client/generated/models/test_case_bulk_run_new_launch_dto.py +156 -0
  1189. src/client/generated/models/test_case_bulk_status_dto.py +95 -0
  1190. src/client/generated/models/test_case_bulk_tag_dto.py +102 -0
  1191. src/client/generated/models/test_case_bulk_test_plan_create_dto.py +100 -0
  1192. src/client/generated/models/test_case_cf_bulk_delta_dto_v2.py +93 -0
  1193. src/client/generated/models/test_case_cfv_bulk_add_dto.py +102 -0
  1194. src/client/generated/models/test_case_clone_rq_dto.py +118 -0
  1195. src/client/generated/models/test_case_count_dto.py +87 -0
  1196. src/client/generated/models/test_case_create_v2_dto.py +155 -0
  1197. src/client/generated/models/test_case_csv_export_options.py +107 -0
  1198. src/client/generated/models/test_case_csv_import_options.py +111 -0
  1199. src/client/generated/models/test_case_csv_import_options_mapping_inner.py +224 -0
  1200. src/client/generated/models/test_case_csv_preview_options.py +113 -0
  1201. src/client/generated/models/test_case_detach_automation_rq_dto.py +91 -0
  1202. src/client/generated/models/test_case_diff.py +158 -0
  1203. src/client/generated/models/test_case_dto.py +161 -0
  1204. src/client/generated/models/test_case_example_dto.py +100 -0
  1205. src/client/generated/models/test_case_export_field.py +51 -0
  1206. src/client/generated/models/test_case_external_link_bulk_add_dto.py +102 -0
  1207. src/client/generated/models/test_case_flat_dto.py +111 -0
  1208. src/client/generated/models/test_case_full_tree_node_dto.py +99 -0
  1209. src/client/generated/models/test_case_import_dto.py +209 -0
  1210. src/client/generated/models/test_case_import_field.py +50 -0
  1211. src/client/generated/models/test_case_import_mapping.py +126 -0
  1212. src/client/generated/models/test_case_info.py +89 -0
  1213. src/client/generated/models/test_case_issue_bulk_add_dto.py +102 -0
  1214. src/client/generated/models/test_case_last_result_dto.py +96 -0
  1215. src/client/generated/models/test_case_layer_bulk_set_dto.py +93 -0
  1216. src/client/generated/models/test_case_light_tree_node_dto.py +98 -0
  1217. src/client/generated/models/test_case_member_bulk_add_dto.py +102 -0
  1218. src/client/generated/models/test_case_mute_bulk_add_dto.py +97 -0
  1219. src/client/generated/models/test_case_overview_dto.py +232 -0
  1220. src/client/generated/models/test_case_parameter_dto.py +87 -0
  1221. src/client/generated/models/test_case_parameter_values.py +89 -0
  1222. src/client/generated/models/test_case_patch_v2_dto.py +153 -0
  1223. src/client/generated/models/test_case_pdf_options.py +104 -0
  1224. src/client/generated/models/test_case_pdf_part.py +39 -0
  1225. src/client/generated/models/test_case_relation_dto.py +96 -0
  1226. src/client/generated/models/test_case_relation_type_dto.py +42 -0
  1227. src/client/generated/models/test_case_row_dto.py +103 -0
  1228. src/client/generated/models/test_case_run_bulk_existing_launch_dto.py +125 -0
  1229. src/client/generated/models/test_case_run_bulk_new_launch_dto.py +156 -0
  1230. src/client/generated/models/test_case_run_by_stats.py +93 -0
  1231. src/client/generated/models/test_case_run_stats_request_dto.py +101 -0
  1232. src/client/generated/models/test_case_scenario_dto.py +107 -0
  1233. src/client/generated/models/test_case_scenario_step_dto.py +124 -0
  1234. src/client/generated/models/test_case_scenario_v2_dto.py +95 -0
  1235. src/client/generated/models/test_case_selection_dto_v2.py +107 -0
  1236. src/client/generated/models/test_case_status_bulk_set_dto.py +95 -0
  1237. src/client/generated/models/test_case_style.py +37 -0
  1238. src/client/generated/models/test_case_sync_from_to.py +89 -0
  1239. src/client/generated/models/test_case_sync_rq_dto.py +120 -0
  1240. src/client/generated/models/test_case_tag_bulk_add_dto.py +102 -0
  1241. src/client/generated/models/test_case_test_plan_bulk_create_dto.py +100 -0
  1242. src/client/generated/models/test_case_tree_all_paths_dto.py +87 -0
  1243. src/client/generated/models/test_case_tree_filter_count_dto.py +89 -0
  1244. src/client/generated/models/test_case_tree_group_add_dto.py +88 -0
  1245. src/client/generated/models/test_case_tree_group_dto.py +93 -0
  1246. src/client/generated/models/test_case_tree_group_rename_dto.py +87 -0
  1247. src/client/generated/models/test_case_tree_leaf_add_dto.py +88 -0
  1248. src/client/generated/models/test_case_tree_leaf_dto.py +103 -0
  1249. src/client/generated/models/test_case_tree_leaf_dto_v2.py +114 -0
  1250. src/client/generated/models/test_case_tree_leaf_rename_dto.py +88 -0
  1251. src/client/generated/models/test_case_tree_node_dto.py +113 -0
  1252. src/client/generated/models/test_case_tree_run_stat_request_dto.py +117 -0
  1253. src/client/generated/models/test_case_tree_selection_dto.py +107 -0
  1254. src/client/generated/models/test_case_tree_selection_dto_v2.py +105 -0
  1255. src/client/generated/models/test_case_type.py +37 -0
  1256. src/client/generated/models/test_case_update_field_dto.py +46 -0
  1257. src/client/generated/models/test_case_update_policy_dto.py +37 -0
  1258. src/client/generated/models/test_case_update_schema_create_dto.py +93 -0
  1259. src/client/generated/models/test_case_update_schema_dto.py +95 -0
  1260. src/client/generated/models/test_case_update_schema_patch_dto.py +91 -0
  1261. src/client/generated/models/test_case_version_dto.py +97 -0
  1262. src/client/generated/models/test_case_version_patch_dto.py +89 -0
  1263. src/client/generated/models/test_case_version_rq_dto.py +90 -0
  1264. src/client/generated/models/test_duration_count.py +89 -0
  1265. src/client/generated/models/test_fixture_result_attachment_patch_dto.py +89 -0
  1266. src/client/generated/models/test_fixture_result_attachment_row_dto.py +93 -0
  1267. src/client/generated/models/test_fixture_result_type_dto.py +37 -0
  1268. src/client/generated/models/test_fixture_result_v2_dto.py +111 -0
  1269. src/client/generated/models/test_key_dto.py +93 -0
  1270. src/client/generated/models/test_key_import_field_mapping.py +94 -0
  1271. src/client/generated/models/test_key_schema_create_dto.py +92 -0
  1272. src/client/generated/models/test_key_schema_dto.py +103 -0
  1273. src/client/generated/models/test_key_schema_patch_dto.py +89 -0
  1274. src/client/generated/models/test_layer_create_dto.py +88 -0
  1275. src/client/generated/models/test_layer_dto.py +97 -0
  1276. src/client/generated/models/test_layer_patch_dto.py +87 -0
  1277. src/client/generated/models/test_layer_schema_create_dto.py +92 -0
  1278. src/client/generated/models/test_layer_schema_dto.py +105 -0
  1279. src/client/generated/models/test_layer_schema_patch_dto.py +89 -0
  1280. src/client/generated/models/test_plan_assign_dto.py +95 -0
  1281. src/client/generated/models/test_plan_create_dto.py +100 -0
  1282. src/client/generated/models/test_plan_diff_dto.py +89 -0
  1283. src/client/generated/models/test_plan_dto.py +115 -0
  1284. src/client/generated/models/test_plan_job_parameters_dto.py +97 -0
  1285. src/client/generated/models/test_plan_job_stat_dto.py +93 -0
  1286. src/client/generated/models/test_plan_member_stat_dto.py +93 -0
  1287. src/client/generated/models/test_plan_patch_dto.py +97 -0
  1288. src/client/generated/models/test_plan_row_dto.py +91 -0
  1289. src/client/generated/models/test_plan_run_request_dto.py +128 -0
  1290. src/client/generated/models/test_plan_tree_selection_dto.py +103 -0
  1291. src/client/generated/models/test_plan_webhook.py +98 -0
  1292. src/client/generated/models/test_result_attachment_patch_dto.py +89 -0
  1293. src/client/generated/models/test_result_attachment_row_dto.py +97 -0
  1294. src/client/generated/models/test_result_attachment_step_dto.py +104 -0
  1295. src/client/generated/models/test_result_attachment_step_dto_all_of_attachment.py +154 -0
  1296. src/client/generated/models/test_result_body_step_dto.py +120 -0
  1297. src/client/generated/models/test_result_bulk_assign_dto.py +93 -0
  1298. src/client/generated/models/test_result_bulk_dto.py +91 -0
  1299. src/client/generated/models/test_result_bulk_entity_ids_dto.py +94 -0
  1300. src/client/generated/models/test_result_bulk_mute_dto.py +105 -0
  1301. src/client/generated/models/test_result_bulk_rerun_dto.py +97 -0
  1302. src/client/generated/models/test_result_bulk_resolve_dto.py +98 -0
  1303. src/client/generated/models/test_result_bulk_tag_dto.py +102 -0
  1304. src/client/generated/models/test_result_create_v2_dto.py +164 -0
  1305. src/client/generated/models/test_result_csv_export_options.py +107 -0
  1306. src/client/generated/models/test_result_csv_export_options_mapping_inner.py +224 -0
  1307. src/client/generated/models/test_result_defect_match_dto.py +96 -0
  1308. src/client/generated/models/test_result_defect_matcher_dto.py +92 -0
  1309. src/client/generated/models/test_result_dto.py +208 -0
  1310. src/client/generated/models/test_result_expected_body_step_dto.py +108 -0
  1311. src/client/generated/models/test_result_export_field.py +57 -0
  1312. src/client/generated/models/test_result_flat_dto.py +116 -0
  1313. src/client/generated/models/test_result_group_node.py +105 -0
  1314. src/client/generated/models/test_result_history_dto.py +136 -0
  1315. src/client/generated/models/test_result_leaf_node.py +110 -0
  1316. src/client/generated/models/test_result_link_defect_dto.py +91 -0
  1317. src/client/generated/models/test_result_mute_reason.py +99 -0
  1318. src/client/generated/models/test_result_new_defect_dto.py +108 -0
  1319. src/client/generated/models/test_result_parameter_dto.py +93 -0
  1320. src/client/generated/models/test_result_patch_dto.py +143 -0
  1321. src/client/generated/models/test_result_rerun_dto.py +87 -0
  1322. src/client/generated/models/test_result_retries_row_dto.py +102 -0
  1323. src/client/generated/models/test_result_row_dto.py +98 -0
  1324. src/client/generated/models/test_result_scenario_dto.py +105 -0
  1325. src/client/generated/models/test_result_scenario_step_dto.py +145 -0
  1326. src/client/generated/models/test_result_scenario_step_parameter.py +93 -0
  1327. src/client/generated/models/test_result_scenario_v2_dto.py +95 -0
  1328. src/client/generated/models/test_result_scenario_v2_dto_steps_inner.py +154 -0
  1329. src/client/generated/models/test_result_stats_dto.py +93 -0
  1330. src/client/generated/models/test_result_tree.py +119 -0
  1331. src/client/generated/models/test_result_tree_filter_count_dto.py +87 -0
  1332. src/client/generated/models/test_result_tree_group_dto.py +97 -0
  1333. src/client/generated/models/test_result_tree_group_dto_v2.py +98 -0
  1334. src/client/generated/models/test_result_tree_leaf_dto.py +112 -0
  1335. src/client/generated/models/test_result_tree_leaf_dto_v2.py +117 -0
  1336. src/client/generated/models/test_result_tree_node_dto.py +113 -0
  1337. src/client/generated/models/test_result_tree_selection_dto.py +105 -0
  1338. src/client/generated/models/test_session_response_dto.py +95 -0
  1339. src/client/generated/models/test_status.py +40 -0
  1340. src/client/generated/models/test_status_count.py +90 -0
  1341. src/client/generated/models/test_tag_create_dto.py +88 -0
  1342. src/client/generated/models/test_tag_dto.py +89 -0
  1343. src/client/generated/models/test_tag_patch_dto.py +87 -0
  1344. src/client/generated/models/text_color_mark.py +93 -0
  1345. src/client/generated/models/text_fill_mark.py +93 -0
  1346. src/client/generated/models/text_mark.py +128 -0
  1347. src/client/generated/models/text_markup_document.py +107 -0
  1348. src/client/generated/models/text_paragraph_node.py +97 -0
  1349. src/client/generated/models/text_paragraph_node_marks_inner.py +221 -0
  1350. src/client/generated/models/tr_scenario_step_dto.py +113 -0
  1351. src/client/generated/models/tree_create_dto.py +100 -0
  1352. src/client/generated/models/tree_custom_field_project_dto.py +99 -0
  1353. src/client/generated/models/tree_dto.py +109 -0
  1354. src/client/generated/models/tree_dto_v2.py +101 -0
  1355. src/client/generated/models/tree_patch_dto.py +97 -0
  1356. src/client/generated/models/tree_path_create_dto.py +98 -0
  1357. src/client/generated/models/tree_path_dto.py +101 -0
  1358. src/client/generated/models/tree_path_item_dto.py +91 -0
  1359. src/client/generated/models/tree_selection_dto.py +97 -0
  1360. src/client/generated/models/underline_mark.py +87 -0
  1361. src/client/generated/models/upload_attachment_dto.py +95 -0
  1362. src/client/generated/models/upload_fixtures_results_dto.py +96 -0
  1363. src/client/generated/models/upload_label_dto.py +89 -0
  1364. src/client/generated/models/upload_link_dto.py +91 -0
  1365. src/client/generated/models/upload_parameter_dto.py +95 -0
  1366. src/client/generated/models/upload_results_dto.py +98 -0
  1367. src/client/generated/models/upload_results_response_dto.py +87 -0
  1368. src/client/generated/models/upload_test_case_dto.py +127 -0
  1369. src/client/generated/models/upload_test_fixture_result_dto.py +113 -0
  1370. src/client/generated/models/upload_test_fixture_result_dto_steps_inner.py +154 -0
  1371. src/client/generated/models/upload_test_fixture_type.py +37 -0
  1372. src/client/generated/models/upload_test_result_attachment_step_dto.py +102 -0
  1373. src/client/generated/models/upload_test_result_body_step_dto.py +118 -0
  1374. src/client/generated/models/upload_test_result_dto.py +182 -0
  1375. src/client/generated/models/upload_test_result_expected_body_step_dto.py +106 -0
  1376. src/client/generated/models/upload_test_result_step_dto.py +113 -0
  1377. src/client/generated/models/upload_test_status.py +40 -0
  1378. src/client/generated/models/webhook_create_dto.py +98 -0
  1379. src/client/generated/models/webhook_dto.py +111 -0
  1380. src/client/generated/models/webhook_patch_dto.py +95 -0
  1381. src/client/generated/models/webhook_settings.py +107 -0
  1382. src/client/generated/models/webhook_subject.py +122 -0
  1383. src/client/generated/models/webhook_validate_dto.py +94 -0
  1384. src/client/generated/models/widget_create_dto.py +105 -0
  1385. src/client/generated/models/widget_create_dto_options.py +263 -0
  1386. src/client/generated/models/widget_data_dto.py +94 -0
  1387. src/client/generated/models/widget_dto.py +114 -0
  1388. src/client/generated/models/widget_options.py +137 -0
  1389. src/client/generated/models/widget_options_analytic_graph.py +99 -0
  1390. src/client/generated/models/widget_options_having_settable_aql.py +99 -0
  1391. src/client/generated/models/widget_options_last_launch_pie_chart.py +97 -0
  1392. src/client/generated/models/widget_options_launch_list.py +97 -0
  1393. src/client/generated/models/widget_options_launch_trend.py +95 -0
  1394. src/client/generated/models/widget_options_markdown.py +89 -0
  1395. src/client/generated/models/widget_options_statistic_trend.py +98 -0
  1396. src/client/generated/models/widget_options_tc_pie_chart.py +98 -0
  1397. src/client/generated/models/widget_options_tc_tree_map.py +99 -0
  1398. src/client/generated/models/widget_options_top_tc.py +96 -0
  1399. src/client/generated/models/widget_options_trend.py +96 -0
  1400. src/client/generated/models/widget_options_trend_v2.py +89 -0
  1401. src/client/generated/models/widget_patch_dto.py +102 -0
  1402. src/client/generated/models/widget_type_dto.py +46 -0
  1403. src/client/generated/models/workflow_create_dto.py +98 -0
  1404. src/client/generated/models/workflow_dto.py +107 -0
  1405. src/client/generated/models/workflow_patch_dto.py +97 -0
  1406. src/client/generated/models/workflow_row_dto.py +89 -0
  1407. src/client/generated/models/workflow_schema_create_dto.py +92 -0
  1408. src/client/generated/models/workflow_schema_dto.py +106 -0
  1409. src/client/generated/models/workflow_schema_patch_dto.py +90 -0
  1410. src/client/generated/rest.py +199 -0
  1411. src/client/refactor-hotspots.md +53 -0
  1412. src/client/refactor-plan.md +78 -0
  1413. src/main.py +95 -0
  1414. src/services/__init__.py +1 -0
  1415. src/services/attachment_service.py +104 -0
  1416. src/services/search_service.py +230 -0
  1417. src/services/shared_step_service.py +329 -0
  1418. src/services/test_case_service.py +951 -0
  1419. src/tools/__init__.py +41 -0
  1420. src/tools/create_test_case.py +76 -0
  1421. src/tools/delete_test_case.py +53 -0
  1422. src/tools/link_shared_step.py +95 -0
  1423. src/tools/search.py +348 -0
  1424. src/tools/shared_steps.py +169 -0
  1425. src/tools/unlink_shared_step.py +70 -0
  1426. src/tools/update_test_case.py +125 -0
  1427. src/utils/__init__.py +1 -0
  1428. src/utils/auth.py +106 -0
  1429. src/utils/config.py +36 -0
  1430. src/utils/error.py +184 -0
  1431. src/utils/logger.py +68 -0
  1432. src/utils/schema_hint.py +58 -0
  1433. src/version.py +3 -0
@@ -0,0 +1,951 @@
1
+ import logging
2
+ from dataclasses import dataclass
3
+ from typing import Any
4
+
5
+ from pydantic import ValidationError as PydanticValidationError
6
+
7
+ from src.client import (
8
+ AllureClient,
9
+ AttachmentStepDtoWithName,
10
+ BodyStepDtoWithSteps,
11
+ )
12
+ from src.client.exceptions import AllureAPIError, AllureNotFoundError, AllureValidationError
13
+ from src.client.generated.models import (
14
+ CustomFieldDto,
15
+ CustomFieldValueWithCfDto,
16
+ ExternalLinkDto,
17
+ ScenarioStepCreateDto,
18
+ SharedStepScenarioDtoStepsInner,
19
+ TestCaseCreateV2Dto,
20
+ TestCaseDto,
21
+ TestCaseOverviewDto,
22
+ TestCaseTreeSelectionDto,
23
+ TestTagDto,
24
+ )
25
+ from src.client.generated.models.attachment_step_dto import AttachmentStepDto
26
+ from src.client.generated.models.body_step_dto import BodyStepDto
27
+ from src.client.generated.models.expected_body_step_dto import ExpectedBodyStepDto
28
+ from src.client.generated.models.shared_step_step_dto import SharedStepStepDto
29
+ from src.client.generated.models.test_case_patch_v2_dto import TestCasePatchV2Dto
30
+ from src.client.generated.models.test_case_scenario_v2_dto import TestCaseScenarioV2Dto
31
+ from src.services.attachment_service import AttachmentService
32
+ from src.utils.schema_hint import generate_schema_hint
33
+
34
+ # Maximum lengths based on API constraints
35
+ MAX_NAME_LENGTH = 255
36
+ MAX_PRECONDITION_LENGTH = 1000
37
+ MAX_TAG_LENGTH = 255
38
+ MAX_BODY_LENGTH = 10000 # Step body limit
39
+
40
+ logger = logging.getLogger(__name__)
41
+
42
+
43
+ @dataclass
44
+ class TestCaseUpdate:
45
+ """Data object for updating a test case."""
46
+
47
+ name: str | None = None
48
+ description: str | None = None
49
+ precondition: str | None = None
50
+ steps: list[dict[str, Any]] | None = None
51
+ tags: list[str] | None = None
52
+ attachments: list[dict[str, str]] | None = None
53
+ custom_fields: dict[str, str] | None = None
54
+ automated: bool | None = None
55
+ expected_result: str | None = None
56
+ status_id: int | None = None
57
+ test_layer_id: int | None = None
58
+ workflow_id: int | None = None
59
+ links: list[dict[str, str]] | None = None
60
+
61
+
62
+ @dataclass
63
+ class DeleteResult:
64
+ """Result of a delete operation."""
65
+
66
+ test_case_id: int
67
+ status: str # "archived", "deleted", "already_deleted", "not_found"
68
+ message: str
69
+ name: str | None = None
70
+
71
+
72
+ class TestCaseService:
73
+ """Service for managing Test Cases in Allure TestOps."""
74
+
75
+ def __init__(
76
+ self,
77
+ client: AllureClient,
78
+ attachment_service: AttachmentService | None = None,
79
+ ) -> None:
80
+ self._client = client
81
+ self._project_id = client.get_project()
82
+ self._attachment_service = attachment_service or AttachmentService(self._client)
83
+ self._cf_cache: dict[int, dict[str, int]] = {} # {project_id: {name: id}}
84
+
85
+ async def create_test_case(
86
+ self,
87
+ name: str,
88
+ description: str | None = None,
89
+ steps: list[dict[str, Any]] | None = None,
90
+ tags: list[str] | None = None,
91
+ attachments: list[dict[str, str]] | None = None,
92
+ custom_fields: dict[str, str] | None = None,
93
+ ) -> TestCaseOverviewDto:
94
+ """Create a new test case.
95
+
96
+ Args:
97
+ name: The name of the test case.
98
+ description: Optional description.
99
+ steps: Optional list of steps [{'action': '...', 'expected': '...', 'attachments': [...]}]
100
+ tags: Optional list of tags.
101
+ attachments: Optional list of test-case level attachments.
102
+ custom_fields: Optional dictionary of custom fields (Name -> Value).
103
+
104
+ Returns:
105
+ The created test case overview.
106
+
107
+ Raises:
108
+ AllureAPIError: If the API request fails.
109
+ AllureValidationError: If validation fails.
110
+ """
111
+ # 1. Input Validation
112
+ self._validate_project_id(self._project_id)
113
+ self._validate_name(name)
114
+ self._validate_steps(steps)
115
+ self._validate_tags(tags)
116
+ self._validate_attachments(attachments)
117
+ self._validate_custom_fields(custom_fields)
118
+
119
+ # 2. Resolve custom fields if provided
120
+ resolved_custom_fields = []
121
+ if custom_fields:
122
+ project_cfs = await self._get_resolved_custom_fields(self._project_id)
123
+ for key, value in custom_fields.items():
124
+ cf_id = project_cfs.get(key)
125
+ if cf_id is None:
126
+ raise AllureValidationError(f"Custom field '{key}' not found in project {self._project_id}.")
127
+
128
+ resolved_custom_fields.append(
129
+ CustomFieldValueWithCfDto(custom_field=CustomFieldDto(id=cf_id, name=key), name=value)
130
+ )
131
+
132
+ # 3. Create TestCaseCreateV2Dto with validation
133
+ tag_dtos = self._build_tag_dtos(tags)
134
+ try:
135
+ data = TestCaseCreateV2Dto(
136
+ project_id=self._project_id,
137
+ name=name,
138
+ description=description,
139
+ tags=tag_dtos,
140
+ custom_fields=resolved_custom_fields,
141
+ )
142
+ except PydanticValidationError as e:
143
+ hint = generate_schema_hint(TestCaseCreateV2Dto)
144
+ raise AllureValidationError(f"Invalid test case data: {e}", suggestions=[hint]) from e
145
+
146
+ # 4. Create the test case
147
+ created_test_case = await self._client.create_test_case(data)
148
+ test_case_id = created_test_case.id
149
+
150
+ if test_case_id is None:
151
+ raise AllureValidationError("Failed to get test case ID from created test case")
152
+
153
+ # 5. Add steps and attachments with rollback on failure
154
+ try:
155
+ # Add steps one by one via separate API calls
156
+ last_step_id: int | None = None
157
+ last_step_id = await self._add_steps(test_case_id, steps, last_step_id)
158
+
159
+ # Add global attachments (appended at end of steps)
160
+ await self._add_global_attachments(test_case_id, attachments, last_step_id)
161
+ except Exception as e:
162
+ # Rollback: delete the partially created test case
163
+ try:
164
+ await self._client.delete_test_case(test_case_id)
165
+ except Exception as rollback_error:
166
+ # Log but don't raise the rollback error to keep the original error primary
167
+ logger.error(f"Rollback failed for test case {test_case_id}: {rollback_error}")
168
+ pass
169
+
170
+ if isinstance(e, (AllureValidationError, AllureAPIError)):
171
+ # Refine message to indicate rollback
172
+ raise type(e)(f"Test case creation failed and was rolled back: {e}") from e
173
+ raise AllureAPIError(f"Test case creation failed and was rolled back: {e}") from e
174
+
175
+ return created_test_case
176
+
177
+ async def get_test_case(self, test_case_id: int) -> TestCaseDto:
178
+ """Retrieve a test case by ID.
179
+
180
+ Args:
181
+ test_case_id: ID of the test case.
182
+
183
+ Returns:
184
+ The test case DTO.
185
+ """
186
+ return await self._client.get_test_case(test_case_id)
187
+
188
+ async def update_test_case(self, test_case_id: int, data: TestCaseUpdate) -> TestCaseDto:
189
+ """Update an existing test case.
190
+
191
+ Args:
192
+ test_case_id: ID of the test case.
193
+ data: Update data.
194
+
195
+ Returns:
196
+ The updated test case.
197
+ """
198
+ # 1. Fetch current state for idempotency and partial updates
199
+ current_case = await self.get_test_case(test_case_id)
200
+
201
+ # 2. Prepare patches for simple fields and tags
202
+ patch_kwargs, has_changes = await self._prepare_field_updates(current_case, data)
203
+
204
+ # 3. Handle Scenario (Steps and Attachments)
205
+ scenario_dto_v2 = await self._prepare_scenario_update(test_case_id, data)
206
+ # We do NOT add scenario to patch_kwargs because patch13 endpoint has issues with BodyStepDto serialization.
207
+ # Instead, we will recreate the scenario step-by-step if needed.
208
+ if scenario_dto_v2:
209
+ has_changes = True
210
+
211
+ # 4. Idempotency Check
212
+ if not has_changes:
213
+ return current_case
214
+
215
+ # 5. Apply Update
216
+ updated_case = current_case
217
+ if patch_kwargs:
218
+ try:
219
+ patch_data = TestCasePatchV2Dto(**patch_kwargs)
220
+ updated_case = await self._client.update_test_case(test_case_id, patch_data)
221
+ except PydanticValidationError as e:
222
+ hint = generate_schema_hint(TestCasePatchV2Dto)
223
+ raise AllureValidationError(f"Invalid update data: {e}", suggestions=[hint]) from e
224
+
225
+ # 6. Apply Scenario Re-creation
226
+ if scenario_dto_v2 and scenario_dto_v2.steps is not None:
227
+ await self._recreate_scenario(test_case_id, scenario_dto_v2.steps)
228
+ # Refetch to get consistent state
229
+ updated_case = await self.get_test_case(test_case_id)
230
+
231
+ return updated_case
232
+
233
+ async def delete_test_case(self, test_case_id: int) -> DeleteResult:
234
+ """Archive/soft-delete a test case."""
235
+ # 1. Verify existence (idempotency check)
236
+ try:
237
+ test_case = await self.get_test_case(test_case_id)
238
+ # Idempotency: Check if already archived
239
+ # Note: exact status name depends on Allure configuration, checking common ones
240
+ if test_case.status and test_case.status.name and test_case.status.name.lower() in ("archived", "deleted"):
241
+ return DeleteResult(
242
+ test_case_id=test_case_id,
243
+ status="already_deleted",
244
+ message=f"Test Case {test_case_id} was already archived (Status: {test_case.status.name}).",
245
+ )
246
+ except AllureNotFoundError:
247
+ return DeleteResult(
248
+ test_case_id=test_case_id,
249
+ status="already_deleted",
250
+ message=f"Test Case {test_case_id} was already archived or doesn't exist.",
251
+ )
252
+
253
+ # 2. Perform deletion
254
+ await self._client.delete_test_case(test_case_id)
255
+
256
+ # 3. Log the action
257
+ logger.info(
258
+ "Test case archived",
259
+ extra={
260
+ "test_case_id": test_case_id,
261
+ "test_case_name": test_case.name,
262
+ "action": "delete",
263
+ "result": "archived",
264
+ },
265
+ )
266
+
267
+ return DeleteResult(
268
+ test_case_id=test_case_id,
269
+ status="archived",
270
+ name=test_case.name,
271
+ message=f"Test Case {test_case_id}: '{test_case.name}' has been archived.",
272
+ )
273
+
274
+ async def add_shared_step_to_case(
275
+ self,
276
+ test_case_id: int,
277
+ shared_step_id: int,
278
+ position: int | None = None,
279
+ ) -> TestCaseDto:
280
+ """Add a shared step reference to a test case.
281
+
282
+ Args:
283
+ test_case_id: Target test case ID.
284
+ shared_step_id: ID of the shared step to link.
285
+ position: Optional 0-indexed position. None = append.
286
+
287
+ Returns:
288
+ Updated test case DTO.
289
+ """
290
+ # 1. Determine position (after_id)
291
+ scen = await self._client.get_test_case_scenario(test_case_id)
292
+ current_steps = scen.steps if scen and scen.steps else []
293
+
294
+ after_id: int | None = None
295
+ if position is None:
296
+ # Append: find the last step ID
297
+ if current_steps:
298
+ last_step = current_steps[-1]
299
+ if last_step.actual_instance:
300
+ after_id = getattr(last_step.actual_instance, "id", None)
301
+ elif position == 0:
302
+ # Insert at start
303
+ after_id = None
304
+ else:
305
+ # Insert at position
306
+ if position < 0 or position > len(current_steps):
307
+ raise AllureValidationError(f"Position {position} is out of bounds (0-{len(current_steps)})")
308
+ # We insert AFTER the step at (position - 1)
309
+ prev_step = current_steps[position - 1]
310
+ if prev_step.actual_instance:
311
+ after_id = getattr(prev_step.actual_instance, "id", None)
312
+
313
+ # 2. Create the step reference
314
+ step_dto = self._build_scenario_step_dto(
315
+ test_case_id=test_case_id,
316
+ shared_step_id=shared_step_id,
317
+ )
318
+
319
+ await self._client.create_scenario_step(
320
+ test_case_id=test_case_id,
321
+ step=step_dto,
322
+ after_id=after_id,
323
+ )
324
+
325
+ return await self.get_test_case(test_case_id)
326
+
327
+ async def remove_shared_step_from_case(
328
+ self,
329
+ test_case_id: int,
330
+ shared_step_id: int,
331
+ ) -> TestCaseDto:
332
+ """Remove all references to a shared step from a test case.
333
+
334
+ Args:
335
+ test_case_id: Target test case ID.
336
+ shared_step_id: ID of the shared step to unlink.
337
+
338
+ Returns:
339
+ Updated test case DTO.
340
+ """
341
+ scen = await self._client.get_test_case_scenario(test_case_id)
342
+ if not scen or not scen.steps:
343
+ return await self.get_test_case(test_case_id)
344
+
345
+ steps_to_delete = []
346
+ for step in scen.steps:
347
+ if step.actual_instance and isinstance(step.actual_instance, SharedStepStepDto):
348
+ if step.actual_instance.shared_step_id == shared_step_id:
349
+ steps_to_delete.append(getattr(step.actual_instance, "id", None))
350
+
351
+ if not steps_to_delete:
352
+ raise AllureValidationError(f"Shared Step {shared_step_id} not found in Test Case {test_case_id}")
353
+
354
+ for step_id in steps_to_delete:
355
+ if step_id:
356
+ await self._client.delete_scenario_step(step_id)
357
+
358
+ return await self.get_test_case(test_case_id)
359
+
360
+ async def _prepare_field_updates( # noqa: C901
361
+ self, current_case: TestCaseDto, data: TestCaseUpdate
362
+ ) -> tuple[dict[str, Any], bool]:
363
+ """Prepare patch arguments for simple fields, tags, and custom fields."""
364
+ patch_kwargs: dict[str, Any] = {}
365
+ has_changes = False
366
+
367
+ if data.name is not None and data.name != current_case.name:
368
+ patch_kwargs["name"] = data.name
369
+ has_changes = True
370
+
371
+ if data.description is not None and data.description != current_case.description:
372
+ patch_kwargs["description"] = data.description
373
+ has_changes = True
374
+
375
+ if data.precondition is not None and data.precondition != current_case.precondition:
376
+ patch_kwargs["precondition"] = data.precondition
377
+ has_changes = True
378
+
379
+ if data.automated is not None and data.automated != current_case.automated:
380
+ patch_kwargs["automated"] = data.automated
381
+ has_changes = True
382
+
383
+ if data.expected_result is not None and data.expected_result != current_case.expected_result:
384
+ patch_kwargs["expected_result"] = data.expected_result
385
+ has_changes = True
386
+
387
+ if data.status_id is not None:
388
+ current_status_id = current_case.status.id if current_case.status else None
389
+ if data.status_id != current_status_id:
390
+ patch_kwargs["status_id"] = data.status_id
391
+ has_changes = True
392
+
393
+ if data.test_layer_id is not None:
394
+ current_test_layer_id = current_case.test_layer.id if current_case.test_layer else None
395
+ if data.test_layer_id != current_test_layer_id:
396
+ patch_kwargs["test_layer_id"] = data.test_layer_id
397
+ has_changes = True
398
+
399
+ if data.workflow_id is not None:
400
+ current_workflow_id = current_case.workflow.id if current_case.workflow else None
401
+ if data.workflow_id != current_workflow_id:
402
+ patch_kwargs["workflow_id"] = data.workflow_id
403
+ has_changes = True
404
+
405
+ if data.links is not None:
406
+ # Simple link replacement for now
407
+ new_links = [ExternalLinkDto(**link) for link in data.links]
408
+ patch_kwargs["links"] = new_links
409
+ has_changes = True
410
+
411
+ # Tags
412
+ if data.tags is not None:
413
+ current_tag_names = sorted([t.name for t in (current_case.tags or []) if t.name])
414
+ new_tag_names = sorted(data.tags)
415
+ if current_tag_names != new_tag_names:
416
+ patch_kwargs["tags"] = self._build_tag_dtos(data.tags)
417
+ has_changes = True
418
+
419
+ # Custom Fields
420
+ if data.custom_fields:
421
+ project_id = current_case.project_id
422
+ if project_id:
423
+ resolved_cfs = []
424
+ project_cfs = await self._get_resolved_custom_fields(project_id)
425
+ for key, value in data.custom_fields.items():
426
+ cf_id = project_cfs.get(key)
427
+ if cf_id:
428
+ resolved_cfs.append(
429
+ CustomFieldValueWithCfDto(custom_field=CustomFieldDto(id=cf_id, name=key), name=value)
430
+ )
431
+ patch_kwargs["custom_fields"] = resolved_cfs
432
+ has_changes = True
433
+
434
+ return patch_kwargs, has_changes
435
+
436
+ async def _prepare_scenario_update(self, test_case_id: int, data: TestCaseUpdate) -> TestCaseScenarioV2Dto | None:
437
+ """Prepare the scenario DTO if steps or attachments need updating."""
438
+ if data.steps is None and data.attachments is None:
439
+ return None
440
+
441
+ existing_steps = await self._get_existing_steps_to_preserve(test_case_id, data)
442
+ final_steps_list = await self._build_final_steps_list(test_case_id, data, existing_steps)
443
+
444
+ return TestCaseScenarioV2Dto(steps=final_steps_list)
445
+
446
+ async def _get_existing_steps_to_preserve(
447
+ self, test_case_id: int, data: TestCaseUpdate
448
+ ) -> list[SharedStepScenarioDtoStepsInner]:
449
+ """Fetch existing steps that should be preserved based on what's being updated."""
450
+ if data.steps is not None and data.attachments is not None:
451
+ return [] # Both provided, nothing to preserve
452
+
453
+ existing_steps: list[SharedStepScenarioDtoStepsInner] = []
454
+ try:
455
+ current_scenario = await self._client.get_test_case_scenario(test_case_id)
456
+ if not current_scenario or not current_scenario.steps:
457
+ return existing_steps
458
+
459
+ for step in current_scenario.steps:
460
+ if not step.actual_instance:
461
+ continue
462
+ is_attachment = isinstance(step.actual_instance, AttachmentStepDto)
463
+ # Preserve attachments if data.attachments is None
464
+ # Preserve body steps if data.steps is None
465
+ if is_attachment and data.attachments is None:
466
+ existing_steps.append(step)
467
+ elif not is_attachment and data.steps is None:
468
+ existing_steps.append(step)
469
+ except Exception: # noqa: S110
470
+ pass
471
+
472
+ return existing_steps
473
+
474
+ async def _build_final_steps_list(
475
+ self,
476
+ test_case_id: int,
477
+ data: TestCaseUpdate,
478
+ existing_steps: list[SharedStepScenarioDtoStepsInner],
479
+ ) -> list[SharedStepScenarioDtoStepsInner]:
480
+ """Build the final list of steps combining new and preserved steps."""
481
+ final_steps: list[SharedStepScenarioDtoStepsInner] = []
482
+
483
+ # Add new or existing body steps
484
+ if data.steps is not None:
485
+ final_steps.extend(await self._build_steps_dtos_from_list(test_case_id, data.steps))
486
+ else:
487
+ for step in existing_steps:
488
+ if step.actual_instance and not isinstance(step.actual_instance, AttachmentStepDto):
489
+ final_steps.append(step)
490
+
491
+ # Add new or existing attachments
492
+ if data.attachments is not None:
493
+ for att in data.attachments:
494
+ row = await self._attachment_service.upload_attachment(test_case_id, att)
495
+ final_steps.append(
496
+ SharedStepScenarioDtoStepsInner(
497
+ actual_instance=AttachmentStepDto(type="AttachmentStepDto", attachment_id=row.id, name=row.name)
498
+ )
499
+ )
500
+ else:
501
+ for step in existing_steps:
502
+ if step.actual_instance and isinstance(step.actual_instance, AttachmentStepDto):
503
+ final_steps.append(step)
504
+
505
+ return final_steps
506
+
507
+ async def _build_steps_dtos_from_list(
508
+ self, test_case_id: int, steps: list[dict[str, Any]]
509
+ ) -> list[SharedStepScenarioDtoStepsInner]:
510
+ """Convert list of step dicts to DTOs for PATCH."""
511
+ dtos = []
512
+ for s in steps:
513
+ action = str(s.get("action", ""))
514
+ expected = str(s.get("expected", ""))
515
+ step_attachments = s.get("attachments", [])
516
+
517
+ children: list[SharedStepScenarioDtoStepsInner] = []
518
+
519
+ if expected:
520
+ children.append(
521
+ SharedStepScenarioDtoStepsInner(
522
+ actual_instance=ExpectedBodyStepDto(type="ExpectedBodyStepDto", body=expected)
523
+ )
524
+ )
525
+
526
+ if step_attachments and isinstance(step_attachments, list):
527
+ for sa in step_attachments:
528
+ if isinstance(sa, dict):
529
+ att_row = await self._attachment_service.upload_attachment(test_case_id, sa)
530
+ children.append(
531
+ SharedStepScenarioDtoStepsInner(
532
+ actual_instance=AttachmentStepDtoWithName(
533
+ type="AttachmentStepDto", attachment_id=att_row.id, name=att_row.name
534
+ )
535
+ )
536
+ )
537
+
538
+ # Recursive steps processing
539
+ nested_steps_data = s.get("steps")
540
+ if nested_steps_data and isinstance(nested_steps_data, list):
541
+ nested_dtos = await self._build_steps_dtos_from_list(test_case_id, nested_steps_data)
542
+ children.extend(nested_dtos)
543
+
544
+ dtos.append(
545
+ SharedStepScenarioDtoStepsInner(
546
+ actual_instance=BodyStepDtoWithSteps(type="BodyStepDto", body=action, steps=children)
547
+ )
548
+ )
549
+ return dtos
550
+
551
+ # ==========================================
552
+ # Validation Methods
553
+ # ==========================================
554
+
555
+ def _validate_project_id(self, project_id: int | None) -> None:
556
+ """Validate project ID."""
557
+ if not isinstance(project_id, int):
558
+ raise AllureValidationError(f"Project ID must be an integer, got {type(project_id).__name__}")
559
+ if project_id <= 0:
560
+ raise AllureValidationError("Project ID is required and must be positive")
561
+
562
+ def _validate_name(self, name: str) -> None:
563
+ """Validate test case name."""
564
+ if not isinstance(name, str):
565
+ raise AllureValidationError(f"Test Case name must be a string, got {type(name).__name__}")
566
+ if not name or not name.strip():
567
+ raise AllureValidationError("Test case name is required.")
568
+ if len(name) > MAX_NAME_LENGTH:
569
+ raise AllureValidationError(f"Test case name must be {MAX_NAME_LENGTH} characters or less.")
570
+
571
+ def _validate_steps(self, steps: list[dict[str, Any]] | None) -> None: # noqa: C901
572
+ """Validate steps list structure and content."""
573
+ if steps is None:
574
+ return
575
+
576
+ if not isinstance(steps, list):
577
+ raise AllureValidationError(f"Steps must be a list, got {type(steps).__name__}")
578
+
579
+ for i, step in enumerate(steps):
580
+ if not isinstance(step, dict):
581
+ hint = generate_schema_hint(ScenarioStepCreateDto)
582
+ raise AllureValidationError(
583
+ f"Step at index {i} must be a dictionary, got {type(step).__name__}", suggestions=[hint]
584
+ )
585
+
586
+ action = step.get("action")
587
+ expected = step.get("expected")
588
+ step_attachments = step.get("attachments")
589
+
590
+ if action is not None and not isinstance(action, str):
591
+ raise AllureValidationError(f"Step {i}: 'action' must be a string, got {type(action).__name__}")
592
+ if action and len(action) > MAX_BODY_LENGTH:
593
+ raise AllureValidationError(f"Step {i}: 'action' must be {MAX_BODY_LENGTH} characters or less")
594
+
595
+ if expected is not None and not isinstance(expected, str):
596
+ raise AllureValidationError(f"Step {i}: 'expected' must be a string, got {type(expected).__name__}")
597
+ if expected and len(expected) > MAX_BODY_LENGTH:
598
+ raise AllureValidationError(f"Step {i}: 'expected' must be {MAX_BODY_LENGTH} characters or less")
599
+
600
+ if step_attachments is not None:
601
+ if not isinstance(step_attachments, list):
602
+ hint = generate_schema_hint(AttachmentStepDto)
603
+ raise AllureValidationError(
604
+ f"Step {i}: 'attachments' must be a list, got {type(step_attachments).__name__}",
605
+ suggestions=[hint],
606
+ )
607
+ for j, att in enumerate(step_attachments):
608
+ if not isinstance(att, dict):
609
+ hint = generate_schema_hint(AttachmentStepDto)
610
+ raise AllureValidationError(
611
+ f"Step {i}, attachment {j}: must be a dictionary, got {type(att).__name__}",
612
+ suggestions=[hint],
613
+ )
614
+
615
+ def _validate_tags(self, tags: list[str] | None) -> None:
616
+ """Validate tags list."""
617
+ if tags is None:
618
+ return
619
+
620
+ if not isinstance(tags, list):
621
+ hint = generate_schema_hint(TestTagDto)
622
+ raise AllureValidationError(f"Tags must be a list, got {type(tags).__name__}", suggestions=[hint])
623
+
624
+ for i, tag in enumerate(tags):
625
+ if not isinstance(tag, str):
626
+ hint = generate_schema_hint(TestTagDto)
627
+ raise AllureValidationError(
628
+ f"Tag at index {i} must be a string, got {type(tag).__name__}", suggestions=[hint]
629
+ )
630
+ if not tag.strip():
631
+ raise AllureValidationError(f"Tag at index {i} cannot be empty")
632
+ if len(tag) > MAX_TAG_LENGTH:
633
+ raise AllureValidationError(f"Tag at index {i} must be {MAX_TAG_LENGTH} characters or less")
634
+
635
+ def _validate_attachments(self, attachments: list[dict[str, str]] | None) -> None:
636
+ """Validate attachments list structure."""
637
+ if attachments is None:
638
+ return
639
+
640
+ if not isinstance(attachments, list):
641
+ hint = generate_schema_hint(AttachmentStepDto)
642
+ raise AllureValidationError(
643
+ f"Attachments must be a list, got {type(attachments).__name__}", suggestions=[hint]
644
+ )
645
+
646
+ for i, att in enumerate(attachments):
647
+ if not isinstance(att, dict):
648
+ hint = generate_schema_hint(AttachmentStepDto)
649
+ raise AllureValidationError(
650
+ f"Attachment at index {i} must be a dictionary, got {type(att).__name__}", suggestions=[hint]
651
+ )
652
+ # Must have either 'content' (base64) or 'url'
653
+ if "content" not in att and "url" not in att:
654
+ raise AllureValidationError(f"Attachment at index {i} must have either 'content' or 'url' key")
655
+ # Must have 'name' for base64 content
656
+ if "content" in att and "name" not in att:
657
+ raise AllureValidationError(f"Attachment at index {i} with 'content' must also have 'name'")
658
+
659
+ def _validate_custom_fields(self, custom_fields: dict[str, str] | None) -> None:
660
+ """Validate custom fields dictionary."""
661
+ if custom_fields is None:
662
+ return
663
+
664
+ if not isinstance(custom_fields, dict):
665
+ hint = generate_schema_hint(CustomFieldValueWithCfDto)
666
+ raise AllureValidationError(
667
+ f"Custom fields must be a dictionary, got {type(custom_fields).__name__}", suggestions=[hint]
668
+ )
669
+
670
+ for key, value in custom_fields.items():
671
+ if not isinstance(key, str):
672
+ raise AllureValidationError(f"Custom field key must be a string, got {type(key).__name__}")
673
+ if not isinstance(value, str):
674
+ raise AllureValidationError(
675
+ f"Custom field value for '{key}' must be a string, got {type(value).__name__}"
676
+ )
677
+ if not key.strip():
678
+ raise AllureValidationError("Custom field key cannot be empty")
679
+
680
+ # ==========================================
681
+ # DTO Building Methods
682
+ # ==========================================
683
+
684
+ def _build_tag_dtos(self, tags: list[str] | None) -> list[TestTagDto]:
685
+ """Build validated TestTagDto list."""
686
+ if not tags:
687
+ return []
688
+
689
+ tag_dtos = []
690
+ for t in tags:
691
+ try:
692
+ tag_dtos.append(TestTagDto(name=t))
693
+ except PydanticValidationError as e:
694
+ hint = generate_schema_hint(TestTagDto)
695
+ raise AllureValidationError(f"Invalid tag '{t}': {e}", suggestions=[hint]) from e
696
+ return tag_dtos
697
+
698
+ async def _get_resolved_custom_fields(self, project_id: int) -> dict[str, int]:
699
+ """Get or fetch custom field name-to-id mapping for a project."""
700
+ if project_id in self._cf_cache:
701
+ return self._cf_cache[project_id]
702
+
703
+ try:
704
+ from src.client.generated.api.test_case_custom_field_controller_api import TestCaseCustomFieldControllerApi
705
+
706
+ api = TestCaseCustomFieldControllerApi(self._client.api_client)
707
+ selection = TestCaseTreeSelectionDto(project_id=project_id)
708
+ cfs = await api.get_custom_fields_with_values2(test_case_tree_selection_dto=selection)
709
+
710
+ mapping = {}
711
+ for cf_with_values in cfs:
712
+ if cf_with_values.custom_field and cf_with_values.custom_field.custom_field:
713
+ inner_cf = cf_with_values.custom_field.custom_field
714
+ if inner_cf.name and inner_cf.id:
715
+ mapping[inner_cf.name] = inner_cf.id
716
+
717
+ self._cf_cache[project_id] = mapping
718
+ return mapping
719
+ except Exception as e:
720
+ # If we fail to fetch CFs, we might want to warn or raise.
721
+ # For now, let's raise as it's critical for resolving names to IDs.
722
+ raise AllureValidationError(f"Failed to fetch custom fields for project {project_id}: {e}") from e
723
+
724
+ def _build_custom_field_dtos(self, custom_fields: dict[str, str] | None) -> list[CustomFieldValueWithCfDto]:
725
+ """DEPRECATED: Use inline resolution in create_test_case."""
726
+ if not custom_fields:
727
+ return []
728
+
729
+ cf_dtos = []
730
+ for key, value in custom_fields.items():
731
+ if not key:
732
+ raise AllureValidationError("Custom field key cannot be empty.")
733
+ if not isinstance(value, str):
734
+ raise AllureValidationError(f"Custom field '{key}' value must be a string.")
735
+ cf_dtos.append(CustomFieldValueWithCfDto(custom_field=CustomFieldDto(name=key), name=value))
736
+ return cf_dtos
737
+
738
+ def _build_scenario_step_dto(
739
+ self,
740
+ test_case_id: int,
741
+ body: str | None = None,
742
+ attachment_id: int | None = None,
743
+ shared_step_id: int | None = None,
744
+ parent_id: int | None = None,
745
+ ) -> ScenarioStepCreateDto:
746
+ """Build and validate a ScenarioStepCreateDto."""
747
+ try:
748
+ return ScenarioStepCreateDto(
749
+ test_case_id=test_case_id,
750
+ body=body,
751
+ attachment_id=attachment_id,
752
+ shared_step_id=shared_step_id,
753
+ parent_id=parent_id,
754
+ )
755
+ except PydanticValidationError as e:
756
+ hint = generate_schema_hint(ScenarioStepCreateDto)
757
+ raise AllureValidationError(f"Invalid scenario step data: {e}", suggestions=[hint]) from e
758
+
759
+ # ==========================================
760
+ # Step Creation Methods
761
+ # ==========================================
762
+
763
+ async def _add_steps(
764
+ self,
765
+ test_case_id: int,
766
+ steps: list[dict[str, Any]] | None,
767
+ last_step_id: int | None,
768
+ ) -> int | None:
769
+ """Add steps to a test case using separate API calls.
770
+
771
+ Args:
772
+ test_case_id: Test case ID to add steps to.
773
+ steps: List of step definitions.
774
+ last_step_id: ID of the last created step (for ordering).
775
+
776
+ Returns:
777
+ The ID of the last created step, or None if no steps were created.
778
+ """
779
+ if not steps:
780
+ return last_step_id
781
+
782
+ for s in steps:
783
+ action = str(s.get("action", ""))
784
+ expected = str(s.get("expected", ""))
785
+ step_attachments: list[dict[str, str]] = s.get("attachments", [])
786
+
787
+ current_parent_id: int | None = None
788
+ last_child_id: int | None = None
789
+
790
+ # Action Step (body step)
791
+ if action:
792
+ step_dto = self._build_scenario_step_dto(test_case_id=test_case_id, body=action)
793
+ response = await self._client.create_scenario_step(
794
+ test_case_id=test_case_id,
795
+ step=step_dto,
796
+ after_id=last_step_id,
797
+ )
798
+ current_parent_id = response.created_step_id
799
+ last_step_id = current_parent_id
800
+
801
+ # If there's an expected result, create it as a child step under the action
802
+ if expected:
803
+ expected_step_dto = self._build_scenario_step_dto(
804
+ test_case_id=test_case_id,
805
+ body=expected,
806
+ parent_id=current_parent_id,
807
+ )
808
+ expected_response = await self._client.create_scenario_step(
809
+ test_case_id=test_case_id,
810
+ step=expected_step_dto,
811
+ after_id=None, # First child
812
+ )
813
+ last_child_id = expected_response.created_step_id
814
+
815
+ # Step Attachments (added as children of the action step)
816
+ if step_attachments and isinstance(step_attachments, list):
817
+ for sa in step_attachments:
818
+ if isinstance(sa, dict):
819
+ attachment_row = await self._attachment_service.upload_attachment(test_case_id, sa)
820
+ attachment_step_dto = self._build_scenario_step_dto(
821
+ test_case_id=test_case_id,
822
+ attachment_id=attachment_row.id,
823
+ parent_id=current_parent_id,
824
+ )
825
+ attachment_response = await self._client.create_scenario_step(
826
+ test_case_id=test_case_id,
827
+ step=attachment_step_dto,
828
+ after_id=last_child_id,
829
+ )
830
+ last_child_id = attachment_response.created_step_id
831
+
832
+ return last_step_id
833
+
834
+ async def _recreate_scenario(self, test_case_id: int, steps: list[SharedStepScenarioDtoStepsInner]) -> None:
835
+ """Recreate the entire scenario step by step."""
836
+ # 1. Fetch current scenario for rollback in case of failure
837
+ try:
838
+ previous_scenario = await self._client.get_test_case_scenario(test_case_id)
839
+ except Exception:
840
+ # If we can't get current scenario, we can't rollback to it. Proceed with caution.
841
+ previous_scenario = None
842
+
843
+ try:
844
+ # 2. Clear existing scenario
845
+ await self._client.update_test_case(
846
+ test_case_id, TestCasePatchV2Dto(scenario=TestCaseScenarioV2Dto(steps=[]))
847
+ )
848
+
849
+ # 3. Recursively add steps
850
+ last_step_id: int | None = None
851
+ for step in steps:
852
+ last_step_id = await self._recursive_add_step(test_case_id, step, after_id=last_step_id)
853
+
854
+ except Exception as e:
855
+ # Rollback Attempt
856
+ if previous_scenario and previous_scenario.steps:
857
+ try:
858
+ # Clear any partial progress
859
+ await self._client.update_test_case(
860
+ test_case_id, TestCasePatchV2Dto(scenario=TestCaseScenarioV2Dto(steps=[]))
861
+ )
862
+ # Attempt to restore previous steps
863
+ # Note: We can only best-effort restore. IDs will change.
864
+ # We need to convert TestCaseScenarioDto steps -> SharedStepScenarioDtoStepsInner
865
+ # This is complex because Read DTOs != Write DTOs.
866
+ # For now, we raise a clear error indicating data was lost/partial.
867
+ # Ideally, we would have logic to convert Read -> Write DTOs, but that's a larger feature.
868
+ # Given the scope, raising a critical error is better than silent failure.
869
+ pass
870
+ except Exception as rollback_error:
871
+ # We log this as a warning because the original error will be raised anyway
872
+ logger.warning(
873
+ f"Rollback failed during scenario recreation. Partial data may persist. Error: {rollback_error}"
874
+ )
875
+
876
+ raise AllureAPIError(
877
+ f"Failed to recreate scenario. Steps may be partially applied or lost. Error: {e}"
878
+ ) from e
879
+
880
+ async def _recursive_add_step(
881
+ self,
882
+ test_case_id: int,
883
+ step: SharedStepScenarioDtoStepsInner,
884
+ parent_id: int | None = None,
885
+ after_id: int | None = None,
886
+ ) -> int | None:
887
+ """Recursively add a step and its children."""
888
+ if not step.actual_instance:
889
+ return after_id
890
+
891
+ instance = step.actual_instance
892
+ created_id = None
893
+
894
+ # Determine step type and create
895
+ if isinstance(instance, BodyStepDto):
896
+ step_dto = self._build_scenario_step_dto(test_case_id=test_case_id, body=instance.body, parent_id=parent_id)
897
+ resp = await self._client.create_scenario_step(test_case_id=test_case_id, step=step_dto, after_id=after_id)
898
+ created_id = resp.created_step_id
899
+
900
+ # Add children (steps may not be a defined field in generated DTO,
901
+ # but we set it via model_construct)
902
+ child_steps = getattr(instance, "steps", None)
903
+ if child_steps:
904
+ last_child_id = None
905
+ for child in child_steps:
906
+ last_child_id = await self._recursive_add_step(
907
+ test_case_id, child, parent_id=created_id, after_id=last_child_id
908
+ )
909
+
910
+ elif isinstance(instance, ExpectedBodyStepDto):
911
+ step_dto = self._build_scenario_step_dto(test_case_id=test_case_id, body=instance.body, parent_id=parent_id)
912
+ resp = await self._client.create_scenario_step(test_case_id=test_case_id, step=step_dto, after_id=after_id)
913
+ created_id = resp.created_step_id
914
+
915
+ elif isinstance(instance, AttachmentStepDto):
916
+ step_dto = self._build_scenario_step_dto(
917
+ test_case_id=test_case_id, attachment_id=instance.attachment_id, parent_id=parent_id
918
+ )
919
+ resp = await self._client.create_scenario_step(test_case_id=test_case_id, step=step_dto, after_id=after_id)
920
+ created_id = resp.created_step_id
921
+
922
+ return created_id if created_id else after_id
923
+
924
+ async def _add_global_attachments(
925
+ self,
926
+ test_case_id: int,
927
+ attachments: list[dict[str, str]] | None,
928
+ last_step_id: int | None,
929
+ ) -> None:
930
+ """Add global attachments to a test case as attachment steps.
931
+
932
+ Args:
933
+ test_case_id: Test case ID to add attachments to.
934
+ attachments: List of attachment definitions.
935
+ last_step_id: ID of the last created step (for ordering).
936
+ """
937
+ if not attachments:
938
+ return
939
+
940
+ for attachment in attachments:
941
+ attachment_row = await self._attachment_service.upload_attachment(test_case_id, attachment)
942
+ attachment_step_dto = self._build_scenario_step_dto(
943
+ test_case_id=test_case_id,
944
+ attachment_id=attachment_row.id,
945
+ )
946
+ response = await self._client.create_scenario_step(
947
+ test_case_id=test_case_id,
948
+ step=attachment_step_dto,
949
+ after_id=last_step_id,
950
+ )
951
+ last_step_id = response.created_step_id