lucius-mcp 0.1.0__py3-none-any.whl → 0.2.2__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 (31) hide show
  1. {lucius_mcp-0.1.0.dist-info → lucius_mcp-0.2.2.dist-info}/METADATA +23 -2
  2. {lucius_mcp-0.1.0.dist-info → lucius_mcp-0.2.2.dist-info}/RECORD +29 -14
  3. src/client/client.py +105 -0
  4. src/client/generated/README.md +65 -7
  5. src/client/generated/__init__.py +16 -0
  6. src/client/generated/api/__init__.py +8 -0
  7. src/client/generated/api/custom_field_controller_api.py +2617 -0
  8. src/client/generated/api/custom_field_project_controller_api.py +2337 -0
  9. src/client/generated/api/custom_field_project_controller_v2_api.py +659 -0
  10. src/client/generated/api/custom_field_schema_controller_api.py +1710 -0
  11. src/client/generated/api/custom_field_value_controller_api.py +3106 -0
  12. src/client/generated/api/custom_field_value_project_controller_api.py +1835 -0
  13. src/client/generated/api/project_controller_api.py +2986 -0
  14. src/client/generated/api/status_controller_api.py +1780 -0
  15. src/client/generated/docs/CustomFieldControllerApi.md +616 -0
  16. src/client/generated/docs/CustomFieldProjectControllerApi.md +554 -0
  17. src/client/generated/docs/CustomFieldProjectControllerV2Api.md +149 -0
  18. src/client/generated/docs/CustomFieldSchemaControllerApi.md +421 -0
  19. src/client/generated/docs/CustomFieldValueControllerApi.md +723 -0
  20. src/client/generated/docs/CustomFieldValueProjectControllerApi.md +430 -0
  21. src/client/generated/docs/LaunchControllerApi.md +2 -2
  22. src/client/generated/docs/ProjectControllerApi.md +717 -0
  23. src/client/generated/docs/StatusControllerApi.md +429 -0
  24. src/services/test_case_service.py +92 -33
  25. src/tools/__init__.py +3 -0
  26. src/tools/get_custom_fields.py +48 -0
  27. src/client/refactor-hotspots.md +0 -53
  28. src/client/refactor-plan.md +0 -78
  29. {lucius_mcp-0.1.0.dist-info → lucius_mcp-0.2.2.dist-info}/WHEEL +0 -0
  30. {lucius_mcp-0.1.0.dist-info → lucius_mcp-0.2.2.dist-info}/entry_points.txt +0 -0
  31. {lucius_mcp-0.1.0.dist-info → lucius_mcp-0.2.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lucius-mcp
3
- Version: 0.1.0
3
+ Version: 0.2.2
4
4
  Summary: Allure TestOps MCP Server
5
5
  Project-URL: Homepage, https://github.com/ivanostanin/lucius-mcp
6
6
  Project-URL: Documentation, https://github.com/ivanostanin/lucius-mcp#readme
@@ -40,6 +40,7 @@ Requires-Dist: allure-pytest>=2.15.3; extra == 'dev'
40
40
  Requires-Dist: faker>=40.1.2; extra == 'dev'
41
41
  Requires-Dist: mypy>=1.19.1; extra == 'dev'
42
42
  Requires-Dist: openapi-generator-cli>=7.19.0; extra == 'dev'
43
+ Requires-Dist: pre-commit>=4.0.0; extra == 'dev'
43
44
  Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
44
45
  Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
45
46
  Requires-Dist: pytest-mock>=3.15.1; extra == 'dev'
@@ -98,6 +99,18 @@ This project uses `uv` for dependency management.
98
99
 
99
100
  ## 🏃 Usage
100
101
 
102
+ ### Add to Claude Code (MCP)
103
+
104
+ 1. **Add the MCP**:
105
+ ```bash
106
+ claude mcp add testops-mcp --transport stdio \
107
+ --env ALLURE_ENDPOINT=https://your-testops.example \
108
+ --env ALLURE_PROJECT_ID=123 \
109
+ --env ALLURE_API_TOKEN=your_token \
110
+ --env MCP_MODE=stdio \
111
+ -- uvx --from lucius-mcp start
112
+ ```
113
+
101
114
  ### Running via Claude Desktop (One-Click Install)
102
115
 
103
116
  The easiest way to use Lucius in Claude Desktop is via the `.mcpb` bundle:
@@ -115,7 +128,7 @@ For integration with MCP clients (like Claude Code) using standard input/output.
115
128
  uv run start
116
129
  ```
117
130
 
118
- Or
131
+ Or
119
132
 
120
133
  ```bash
121
134
  MCP_MODE=stdio uv run start
@@ -267,3 +280,11 @@ uv run ruff check src/
267
280
  ```bash
268
281
  uv run mypy --strict src/
269
282
  ```
283
+
284
+ ## Release process
285
+ 1. Bump version in `pyproject.toml`.
286
+ 2. Run `uv sync --all-extras` to update dependencies.
287
+ 3. Write release notes in `CHANGELOG.md`.
288
+ 4. Commit changes.
289
+ 5. Create a tag with the new version.
290
+ 6. Push commits and tags.
@@ -2,23 +2,29 @@ src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  src/main.py,sha256=JPT9QfOVOj5BGGVJtq6megXZqibTIHRV3zY38jQeI5g,2580
3
3
  src/version.py,sha256=ZAzHiNwu2X1UtwUkcHNmKrXBwRJeVvXbpdfi7wtv3DY,76
4
4
  src/client/__init__.py,sha256=L0qijQKzYI4ONrhKHv13ET2-Z12HcbgDKN6gHJ7gAVU,1410
5
- src/client/client.py,sha256=ApTfxNFFAP9OKI6h0h2OAY2Pxlsxe2OomLtpaPBGHOw,46257
5
+ src/client/client.py,sha256=P94kg3Q0NzK2gDpSKlYxxC4QRo004k3kygVYmJaq0JU,51420
6
6
  src/client/exceptions.py,sha256=2iGpxxeiIkptvhptGFoqABI0cOLhGpIWX6c-I9Qc0yM,1498
7
- src/client/refactor-hotspots.md,sha256=K7Vw6mkgn6jaYToP1CM1wTmeduFXPfxe5fDj9TMQ0oQ,4647
8
- src/client/refactor-plan.md,sha256=2Y3NueI3R9PSIiSc1vi54T4BjKJ6L9ba07zpnwQmTJw,4840
9
- src/client/generated/README.md,sha256=KHi-rfNeDol2syRNtQkCVNM4Q5kU2TjDH_SGvKQH_ko,75112
10
- src/client/generated/__init__.py,sha256=RwJwMW7ZeCCCNfjrBM6kGA4uggTEN87hZL2oePdK8dU,96797
7
+ src/client/generated/README.md,sha256=u4zJ5sHRWRgZhAqtNYQGj8r8aRlMfeOJa61dA0bXwiY,85836
8
+ src/client/generated/__init__.py,sha256=UM-tfbMX_J3GFEtxZlxdxsnpj8mPHPJ1Dj-T-bi9vDE,98122
11
9
  src/client/generated/api_client.py,sha256=0m1Ax05egObKEi4V-APnDamj0FZVE5Z4isSu8QPIP8Y,27910
12
10
  src/client/generated/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
13
11
  src/client/generated/configuration.py,sha256=nJvRx1KvWIkb7B0u-PSKRtwmm8JTFPgBz1CpKlp5Gno,17823
14
12
  src/client/generated/exceptions.py,sha256=ZpDRfPSo4xseVbDop1tZQhxJrUweRUcuCHI-pociYmg,6516
15
13
  src/client/generated/rest.py,sha256=U6oxD5gY8dkbGrByetRZRb8UVU7IuFldQULHDM5xrF4,6470
16
- src/client/generated/api/__init__.py,sha256=lOgz-j8ujlhOi-lLza2D401yoN8IeSuC0B5xrDi-2GU,1301
14
+ src/client/generated/api/__init__.py,sha256=1K0GST-qYJevppRL2VRBcmLcRA1q4pXOLseyEi6BtkY,2086
15
+ src/client/generated/api/custom_field_controller_api.py,sha256=Cu5yPnHHR8DH3MjY1bVF3W2QkhWQsKqSWg75rMo7BpQ,99963
16
+ src/client/generated/api/custom_field_project_controller_api.py,sha256=itwkdD7cLKOIx2h4k_77lItQyETzhWtiqvjSoKfOpzE,90527
17
+ src/client/generated/api/custom_field_project_controller_v2_api.py,sha256=iXJtWSwq87b_QOU9WB8srvZijqr9tSOfGGuNhlh2Adc,25852
18
+ src/client/generated/api/custom_field_schema_controller_api.py,sha256=owULmpUNYCMGVLJKv_3m6fHwCc4J55Cep0TSXgHwfok,65843
19
+ src/client/generated/api/custom_field_value_controller_api.py,sha256=VGCT9QAlYUB137PbSw1Qi--mtJFLkxKvCU1_UY4x6ZI,122414
20
+ src/client/generated/api/custom_field_value_project_controller_api.py,sha256=Re_IpphBdpMFky0I81E2mGSzatsUl4wmk4CtN873cd4,73080
17
21
  src/client/generated/api/launch_controller_api.py,sha256=UwUVvnDMl7WKeGffa2aWJy93V6tiNeyLm5lX0maVPlA,320808
18
22
  src/client/generated/api/launch_search_controller_api.py,sha256=b1k3YJrwJYknRpfAVv3ZNTWcObJrfzobjWjt3J1Y7vc,24638
23
+ src/client/generated/api/project_controller_api.py,sha256=ykBhUwbv5oRJKx0BpP-FgR_CPU01rckJAMs2eej43h0,113644
19
24
  src/client/generated/api/shared_step_attachment_controller_api.py,sha256=5hrCM7hKCdecNsjXndAzhuM4XFHPyv0uFHTzsD6SH7Y,66441
20
25
  src/client/generated/api/shared_step_controller_api.py,sha256=rhGRLojjhwPDnUq68hgzgA1G0WIDnYj1DsumuyYPDOs,73562
21
26
  src/client/generated/api/shared_step_scenario_controller_api.py,sha256=vjPzQEUB5tPwgKxx09GJ87gyKg_GYEo3IYKh5epxPbQ,99381
27
+ src/client/generated/api/status_controller_api.py,sha256=1TFyD8SfeYNBseozMNfDGYyKTaGS7P_9T7VtOnRJnm4,67987
22
28
  src/client/generated/api/test_case_attachment_controller_api.py,sha256=7c6CkRY6fw2MSvZfPbudFkadEhyJfX-t1MsXznXVy6o,66221
23
29
  src/client/generated/api/test_case_bulk_controller_api.py,sha256=zcKPzvDqlG2I7U20in01iVu9Xk-kpNI8_uP5klRQ3Ec,209958
24
30
  src/client/generated/api/test_case_controller_api.py,sha256=EceIXZW0Z71lBSW9PZw5oWBdQpaK9JMAfyvey3zyOVM,153170
@@ -83,25 +89,31 @@ src/client/generated/docs/CreateLaunchEvent.md,sha256=0WF975AF522uMoFFRQesGewSbr
83
89
  src/client/generated/docs/CsvImportOptions.md,sha256=_sz8TcbG7MgRg2io2Tf54T9yTrE_XnRPI4257mHamfg,1120
84
90
  src/client/generated/docs/CustomFieldBulkAddToProjectsDto.md,sha256=GD7QHwoBTiIEMaiCUStDD3WNM-Pmx2OWWSVREOpoQns,1193
85
91
  src/client/generated/docs/CustomFieldBulkArchiveDto.md,sha256=EOOmKGdp9lhV6B69RN4WJQ5UaCQr0Qyfh6tIF9KXU4o,1092
92
+ src/client/generated/docs/CustomFieldControllerApi.md,sha256=pQ5Tf9smtsMQVvlTf10rNkMiqDFcZ1zfAM5ljeBIazo,19611
86
93
  src/client/generated/docs/CustomFieldCreateDto.md,sha256=mCIEgJMslTkUEd2ofvKlXlwTPAbFR1sY3k04554W45E,1050
87
94
  src/client/generated/docs/CustomFieldDto.md,sha256=j2uZqMSGKLfqyX2SItddGA-ucmzgTmclH4ZzEOlUh-g,1347
88
95
  src/client/generated/docs/CustomFieldExportFieldMapping.md,sha256=ZQwt8DSFQbG3-8LU4Wrua50BEepbhYwvKOKGFeLxsTY,1224
89
96
  src/client/generated/docs/CustomFieldImportFieldMapping.md,sha256=X46syUCM2Lu248oVud6wCdA_oSA1Bwnjn7NVRtjUCWs,1193
90
97
  src/client/generated/docs/CustomFieldMergeDto.md,sha256=RPc8iGa8qIMI72jV_fgqb2m4CXBrNT5P7pyFpe6ANTs,1010
91
98
  src/client/generated/docs/CustomFieldPatchDto.md,sha256=v_9NHMw_7vJzsmmHgdcsFdgb2vy37220amqMXJLTSEg,1098
99
+ src/client/generated/docs/CustomFieldProjectControllerApi.md,sha256=QSW9ccqv8O4jsY1MOkyk7T_Jt-fz59MRJxhW-DpSTIk,17860
100
+ src/client/generated/docs/CustomFieldProjectControllerV2Api.md,sha256=RmlTWrIXrtl_wYhFY_jraRDIQI83ZXtK9tBZ5Brx8uw,5260
92
101
  src/client/generated/docs/CustomFieldProjectCountDto.md,sha256=Yp5C67_lBAV6NFa_6q9nGJ9ayVWjSlGOImSwf8XnKGo,1113
93
102
  src/client/generated/docs/CustomFieldProjectDto.md,sha256=K_fzqoXArKNpImrst9y4YkQ947pjhMcwaeD5MZuwf9w,1521
94
103
  src/client/generated/docs/CustomFieldProjectPatchDto.md,sha256=TcuUlF2F5NouXxS4NZwlz_zTvBObTtKkVHfvWkpwa7s,1174
95
104
  src/client/generated/docs/CustomFieldProjectWithValuesDto.md,sha256=wwMErFMEgt4L-cGAAu7FiLVYaG7poksEllJXe8QKnx8,1280
96
105
  src/client/generated/docs/CustomFieldRawDto.md,sha256=r80ZiV_KdiPa6BYhoNDo76aNxZk7GhH3AHOqwHfXUEc,1208
106
+ src/client/generated/docs/CustomFieldSchemaControllerApi.md,sha256=UCmjwPryGoj5LpXNu9lnW7-eQ129j1IwiQQt-5RWQcE,13489
97
107
  src/client/generated/docs/CustomFieldSchemaCountDto.md,sha256=XW7gfjNJu88TwMIH6pVw9LKlDszskeZPij4-5dmK78E,1100
98
108
  src/client/generated/docs/CustomFieldSchemaCreateDto.md,sha256=tzrjKYt6gh_fGNQpt3Yugssy3IznMr3BQp4FSRLbkBo,1124
99
109
  src/client/generated/docs/CustomFieldSchemaDto.md,sha256=Gd2pDCpUOyFcUENsvnSM8rz3T_IAbwWvpinjxiGgTwE,1320
100
110
  src/client/generated/docs/CustomFieldSchemaPatchDto.md,sha256=Am4xnZj-E_jdxiBzozYP4qAhCkAHShEArA1nfNGdmnA,1102
101
111
  src/client/generated/docs/CustomFieldValueBulkDeleteDto.md,sha256=oT7tJUvaD65tsj9ww6ht8Vak3lckk0kbEeSdKiGvi3g,1139
102
112
  src/client/generated/docs/CustomFieldValueBulkMergeDto.md,sha256=V9yPcG1GFlqterbq9EmRnshLcHVRUSN6J3X4o8D1WME,1227
113
+ src/client/generated/docs/CustomFieldValueControllerApi.md,sha256=abXseYWAo9Zp91Mxwerz8CYEqyMF9Oxuwsy5z-gbtbE,25800
103
114
  src/client/generated/docs/CustomFieldValueDto.md,sha256=BI9o5y93Fis3OcwtrpQ3Pba1lgxafmWRyJm3CHkGZmA,1006
104
115
  src/client/generated/docs/CustomFieldValuePatchDto.md,sha256=dLf31yMnQIGW7NJuMoDM1KAxth1QB3U2UrTY9v5HPoI,1126
116
+ src/client/generated/docs/CustomFieldValueProjectControllerApi.md,sha256=j_lfzntw5cZeNbf_PF9adflpKO5G2oDsYghe8v-HT8s,15461
105
117
  src/client/generated/docs/CustomFieldValueProjectCreateDto.md,sha256=myXwtg-zTYP0Cc6nPcbhxe4WOE5bFVcI9Tt5125deaM,1279
106
118
  src/client/generated/docs/CustomFieldValueProjectMergeByIdDto.md,sha256=lZwA3_En2kMcBfwILres6rhZ3UGOxUaiJ8g61nwTbK4,1203
107
119
  src/client/generated/docs/CustomFieldValueProjectMergeByNameDto.md,sha256=RHJ9E52GKr9c5AXXhfnJNw0WXMY1Hho1gvNo2uOf_98,1325
@@ -248,7 +260,7 @@ src/client/generated/docs/JobTestCasesStatDto.md,sha256=ID0seyDEFbGJCR3J0Vs3wMBR
248
260
  src/client/generated/docs/Launch.md,sha256=jmhi6haWcMSTdRfzjkXzKYZfsQE1f9zW4kaCfJRGY7M,903
249
261
  src/client/generated/docs/LaunchCleanupRequest.md,sha256=fopLW9vs9Cx0hD3RXfo8Lz6FJiUc_aQSGC0pAQtW4pg,1121
250
262
  src/client/generated/docs/LaunchCloseConfigDto.md,sha256=yC5CM_HdUzf8aCX1euIEcAbhCwog4rw6NX8vW44eNkg,1165
251
- src/client/generated/docs/LaunchControllerApi.md,sha256=Pi2pQHnWaEtp7EvC5KOH-zT7uCdqqlG4PCjQpe_ctoQ,63445
263
+ src/client/generated/docs/LaunchControllerApi.md,sha256=jvp3b3iMt2YHz7KO3pHYX9RbhubZsbKBHB4CsmjeRR0,63429
252
264
  src/client/generated/docs/LaunchCopyRqDto.md,sha256=PKOX9VecsLQVHiVvQXsBsDX0Vqn0dRZwsQnLaeTPaI0,1279
253
265
  src/client/generated/docs/LaunchCreateAndUploadDto.md,sha256=SJvRv-IURSbxpE4fouUTpLlFisSOTiWG0Z0q34Y97Fc,1358
254
266
  src/client/generated/docs/LaunchCreateDto.md,sha256=Pc6kDzVpD9n_WCQtEUS_Axj0ObF_prdghwFC0ewvRqQ,1228
@@ -408,6 +420,7 @@ src/client/generated/docs/ProjectCategoryMatcherRemoveDto.md,sha256=C0u48F3Tsz-E
408
420
  src/client/generated/docs/ProjectCategoryRemoveDto.md,sha256=N1ykzxOzmy8JwNrfHsuzWbSmg1fjN5i_C28F1ZaDJJU,1033
409
421
  src/client/generated/docs/ProjectCollaboratorAccessDto.md,sha256=RjMGlvQGd_pAqK-zm05-mldlqrE3HvVqVdX5dML7kD0,1389
410
422
  src/client/generated/docs/ProjectCollaboratorDto.md,sha256=lqvEcSP8GECuRD41Z2SKwUtqygtUXAVuj6t8Zzv2CUY,1092
423
+ src/client/generated/docs/ProjectControllerApi.md,sha256=mhAy1NlEYBgTzKfTSR81O54zkNc7g4pxryftfjP07GY,22943
411
424
  src/client/generated/docs/ProjectCreateDto.md,sha256=4P88Exbaal-ytDTzCb6tvtq_IetsHouEY89qxTMVQEU,1078
412
425
  src/client/generated/docs/ProjectCustomFieldDto.md,sha256=LN4mUmdERGTxW6wn7YzJv-omRx3tL86wv2YI3j-j9uw,1460
413
426
  src/client/generated/docs/ProjectDto.md,sha256=S5feyocBC0uqlBITmYHacFBpPg29TxNCM8oqRd0LvEU,1271
@@ -459,6 +472,7 @@ src/client/generated/docs/SharedStepStepDto.md,sha256=192S4qs3x4Aa714JKQdzQHJtT5
459
472
  src/client/generated/docs/StatisticDto.md,sha256=760FjMwWzxecOp2ZOOqASzAgo2uTUEZFLctngDIfGqM,1105
460
473
  src/client/generated/docs/StatisticWidgetItem.md,sha256=dtSgphosDCzDYyqX746feeS6k-c2fgm1Nc7KH3h5Wbs,1082
461
474
  src/client/generated/docs/Status.md,sha256=qIlRjl4a_Rcim6PUb7BX3ewGjLswACr6HvBAQJ2Rs8g,320
475
+ src/client/generated/docs/StatusControllerApi.md,sha256=9aReEhLTqDsx97tKYiEro3LgCN6llVhrA1fuUgogQuo,13332
462
476
  src/client/generated/docs/StatusCreateDto.md,sha256=h5xIAS3i4f7nZYk1qeb6WOgHWKrdW2zd7adCNz5FL3A,929
463
477
  src/client/generated/docs/StatusDto.md,sha256=J5tAnZkb6aVmwwR-JzZO1owvebeDTP95CQZCJ1LoJuM,1085
464
478
  src/client/generated/docs/StatusPatchDto.md,sha256=oY8Q8k59SmjMss9GYwtNuIjdeU3MA0yT6qvhzusE-Ks,938
@@ -1411,10 +1425,11 @@ src/services/__init__.py,sha256=Lq29htiPlTQ-_gqsZQz_E4HB13KMYs2SgMsq2m9biLU,44
1411
1425
  src/services/attachment_service.py,sha256=_aQ-CAOCCDth_sWz1EyDw4W-1POQDsQ28YYCHUEXAlA,3890
1412
1426
  src/services/search_service.py,sha256=KW8pzZ9_oo3nd9yam5Eh-Gp7eXKIQ6lKeYr3e5RHKCs,7853
1413
1427
  src/services/shared_step_service.py,sha256=CSHLnf4ziuWG3XfeCHYokuVT-0t3T4ZwJzSs3W0cY4U,12722
1414
- src/services/test_case_service.py,sha256=qtzdzOzx2FvM8Sh5G9WoYqUn-aTCttGSNLKnnGRKjLE,40629
1415
- src/tools/__init__.py,sha256=iNr06BSpeKvvUDuyHUnUVDMHs6u9kuYFVLTqULbGI7Q,1202
1428
+ src/services/test_case_service.py,sha256=Pkk9XWIqog22gzsoHbVWFJqAQZ_UVRIw374BfuWfAlI,43411
1429
+ src/tools/__init__.py,sha256=29cJwQ92Yg7FOH0lJA6VPRcj8HNJvw1vQpaSndP5894,1308
1416
1430
  src/tools/create_test_case.py,sha256=FNRZA4EwrcnrmBikqTSmYKDKxv6AcCYcyeTDrTGAg1I,3195
1417
1431
  src/tools/delete_test_case.py,sha256=kAWNAFN5on5jt7dCuWt4i-k8C8QKobtMMfgHizjbcH0,2058
1432
+ src/tools/get_custom_fields.py,sha256=VxAikxd2GayOqw09Bm2E6jBQreBVPCJBLPLJNTHI-Ic,1749
1418
1433
  src/tools/link_shared_step.py,sha256=m6jKudXeBnS4fC47ULVjuwsBisDyPVgJHuNFjDuRrE8,3734
1419
1434
  src/tools/search.py,sha256=XnMQjBBpqIDhNz2YxiJroAnqSV48JJmvsNlA7USb-2g,13754
1420
1435
  src/tools/shared_steps.py,sha256=VYNEC4TBhZyTp_vZypOtsHjvXpwtf_wUx0C9bCY86p8,7193
@@ -1426,8 +1441,8 @@ src/utils/config.py,sha256=q6PUlkfgpFEzrzspbmAYcvBbFOgOIDp5RTk5XcR4IGk,1412
1426
1441
  src/utils/error.py,sha256=kUsp62qbz_Q1pz6dGblGTi0rNixJOiF-Vtp19punh7Q,6347
1427
1442
  src/utils/logger.py,sha256=8ZKOitFjwBRwDfD8wt0hfwIkS-rrrw2bjX5CaxgaZ9g,2504
1428
1443
  src/utils/schema_hint.py,sha256=tQkoWTQG7rGbS-pA5Hve-wdb3Sx0869IOy9DCHU_3QM,1811
1429
- lucius_mcp-0.1.0.dist-info/METADATA,sha256=chAPEZ7CjLCB7hV499B8zjIaA7iU3eppags2Cd0zUzk,8625
1430
- lucius_mcp-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1431
- lucius_mcp-0.1.0.dist-info/entry_points.txt,sha256=Y-XfajjPTM5lObHWqsMYRsLrJRsILKpFGgwBcefRZvw,41
1432
- lucius_mcp-0.1.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1433
- lucius_mcp-0.1.0.dist-info/RECORD,,
1444
+ lucius_mcp-0.2.2.dist-info/METADATA,sha256=9i3YovTiDFI0niZuMZ04YdEENi7BCmSCAyWLHerGSPs,9234
1445
+ lucius_mcp-0.2.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1446
+ lucius_mcp-0.2.2.dist-info/entry_points.txt,sha256=Y-XfajjPTM5lObHWqsMYRsLrJRsILKpFGgwBcefRZvw,41
1447
+ lucius_mcp-0.2.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1448
+ lucius_mcp-0.2.2.dist-info/RECORD,,
src/client/client.py CHANGED
@@ -23,11 +23,16 @@ from .exceptions import (
23
23
  AllureRateLimitError,
24
24
  AllureValidationError,
25
25
  )
26
+ from .generated.api.custom_field_controller_api import CustomFieldControllerApi
27
+ from .generated.api.custom_field_project_controller_api import CustomFieldProjectControllerApi
28
+ from .generated.api.custom_field_project_controller_v2_api import CustomFieldProjectControllerV2Api
29
+ from .generated.api.custom_field_value_project_controller_api import CustomFieldValueProjectControllerApi
26
30
  from .generated.api.shared_step_attachment_controller_api import SharedStepAttachmentControllerApi
27
31
  from .generated.api.shared_step_controller_api import SharedStepControllerApi
28
32
  from .generated.api.shared_step_scenario_controller_api import SharedStepScenarioControllerApi
29
33
  from .generated.api.test_case_attachment_controller_api import TestCaseAttachmentControllerApi
30
34
  from .generated.api.test_case_controller_api import TestCaseControllerApi
35
+ from .generated.api.test_case_custom_field_controller_api import TestCaseCustomFieldControllerApi
31
36
  from .generated.api.test_case_overview_controller_api import TestCaseOverviewControllerApi
32
37
  from .generated.api.test_case_scenario_controller_api import TestCaseScenarioControllerApi
33
38
  from .generated.api.test_case_search_controller_api import TestCaseSearchControllerApi
@@ -36,6 +41,7 @@ from .generated.configuration import Configuration
36
41
  from .generated.exceptions import ApiException
37
42
  from .generated.models.attachment_step_dto import AttachmentStepDto
38
43
  from .generated.models.body_step_dto import BodyStepDto
44
+ from .generated.models.custom_field_project_with_values_dto import CustomFieldProjectWithValuesDto
39
45
  from .generated.models.custom_field_value_with_cf_dto import CustomFieldValueWithCfDto
40
46
  from .generated.models.page_shared_step_dto import PageSharedStepDto
41
47
  from .generated.models.page_test_case_dto import PageTestCaseDto
@@ -55,6 +61,7 @@ from .generated.models.test_case_patch_v2_dto import TestCasePatchV2Dto
55
61
  from .generated.models.test_case_row_dto import TestCaseRowDto
56
62
  from .generated.models.test_case_scenario_dto import TestCaseScenarioDto
57
63
  from .generated.models.test_case_scenario_v2_dto import TestCaseScenarioV2Dto
64
+ from .generated.models.test_case_tree_selection_dto import TestCaseTreeSelectionDto
58
65
 
59
66
 
60
67
  # Subclasses to add missing fields to generated models
@@ -97,6 +104,11 @@ type ApiType = (
97
104
  | SharedStepScenarioControllerApi
98
105
  | TestCaseOverviewControllerApi
99
106
  | TestCaseSearchControllerApi
107
+ | TestCaseCustomFieldControllerApi
108
+ | CustomFieldControllerApi
109
+ | CustomFieldProjectControllerApi
110
+ | CustomFieldProjectControllerV2Api
111
+ | CustomFieldValueProjectControllerApi
100
112
  )
101
113
 
102
114
  type NormalizedScenarioDict = dict[str, object]
@@ -110,6 +122,7 @@ __all__ = [
110
122
  "AllureClient",
111
123
  "AttachmentStepDtoWithName",
112
124
  "BodyStepDtoWithSteps",
125
+ "CustomFieldProjectWithValuesDto",
113
126
  "PageSharedStepDto",
114
127
  "PageTestCaseDto",
115
128
  "ScenarioStepCreateDto",
@@ -129,6 +142,7 @@ __all__ = [
129
142
  "TestCaseRowDto",
130
143
  "TestCaseScenarioDto",
131
144
  "TestCaseScenarioV2Dto",
145
+ "TestCaseTreeSelectionDto",
132
146
  ]
133
147
 
134
148
 
@@ -190,6 +204,11 @@ class AllureClient:
190
204
  self._shared_step_scenario_api: SharedStepScenarioControllerApi | None = None
191
205
  self._overview_api: TestCaseOverviewControllerApi
192
206
  self._search_api: TestCaseSearchControllerApi | None = None
207
+ self._test_case_custom_field_api: TestCaseCustomFieldControllerApi | None = None
208
+ self._custom_field_api: CustomFieldControllerApi | None = None
209
+ self._custom_field_project_api: CustomFieldProjectControllerApi | None = None
210
+ self._custom_field_project_v2_api: CustomFieldProjectControllerV2Api | None = None
211
+ self._custom_field_value_project_api: CustomFieldValueProjectControllerApi | None = None
193
212
  self._is_entered = False
194
213
 
195
214
  @classmethod
@@ -326,6 +345,11 @@ class AllureClient:
326
345
  self._shared_step_scenario_api = SharedStepScenarioControllerApi(self._api_client)
327
346
  self._overview_api = TestCaseOverviewControllerApi(self._api_client)
328
347
  self._search_api = TestCaseSearchControllerApi(self._api_client)
348
+ self._test_case_custom_field_api = TestCaseCustomFieldControllerApi(self._api_client)
349
+ self._custom_field_api = CustomFieldControllerApi(self._api_client)
350
+ self._custom_field_project_api = CustomFieldProjectControllerApi(self._api_client)
351
+ self._custom_field_project_v2_api = CustomFieldProjectControllerV2Api(self._api_client)
352
+ self._custom_field_value_project_api = CustomFieldValueProjectControllerApi(self._api_client)
329
353
 
330
354
  @property
331
355
  def api_client(self) -> ApiClient:
@@ -439,6 +463,31 @@ class AllureClient:
439
463
  self, attr_name: Literal["_search_api"], *, error_name: str | None = None
440
464
  ) -> TestCaseSearchControllerApi: ...
441
465
 
466
+ @overload
467
+ async def _get_api(
468
+ self, attr_name: Literal["_test_case_custom_field_api"], *, error_name: str | None = None
469
+ ) -> TestCaseCustomFieldControllerApi: ...
470
+
471
+ @overload
472
+ async def _get_api(
473
+ self, attr_name: Literal["_custom_field_api"], *, error_name: str | None = None
474
+ ) -> CustomFieldControllerApi: ...
475
+
476
+ @overload
477
+ async def _get_api(
478
+ self, attr_name: Literal["_custom_field_project_api"], *, error_name: str | None = None
479
+ ) -> CustomFieldProjectControllerApi: ...
480
+
481
+ @overload
482
+ async def _get_api(
483
+ self, attr_name: Literal["_custom_field_project_v2_api"], *, error_name: str | None = None
484
+ ) -> CustomFieldProjectControllerV2Api: ...
485
+
486
+ @overload
487
+ async def _get_api(
488
+ self, attr_name: Literal["_custom_field_value_project_api"], *, error_name: str | None = None
489
+ ) -> CustomFieldValueProjectControllerApi: ...
490
+
442
491
  async def _get_api(self, attr_name: str, *, error_name: str | None = None) -> ApiType:
443
492
  self._require_entered()
444
493
  await self._ensure_valid_token()
@@ -818,6 +867,62 @@ class AllureClient:
818
867
  with_expected_result=with_expected_result,
819
868
  )
820
869
 
870
+ async def get_custom_fields_with_values(self, project_id: int) -> list[CustomFieldProjectWithValuesDto]:
871
+ """Fetch all custom fields and their allowed values for a project.
872
+
873
+ This method uses CustomFieldProjectControllerV2Api to find all custom fields
874
+ associated with the project and then fetches their allowed values using
875
+ CustomFieldValueProjectControllerApi.
876
+
877
+ Args:
878
+ project_id: Target project ID.
879
+
880
+ Returns:
881
+ List of custom field DTOs with values.
882
+
883
+ Raises:
884
+ AllureValidationError: If project_id is invalid.
885
+ AllureAuthError: If unauthorized.
886
+ AllureAPIError: If the server returns an error.
887
+ """
888
+ if not isinstance(project_id, int) or project_id <= 0:
889
+ raise AllureValidationError("Project ID must be a positive integer")
890
+
891
+ v2_api = await self._get_api("_custom_field_project_v2_api")
892
+ val_api = await self._get_api("_custom_field_value_project_api")
893
+
894
+ # 1. Get all custom fields for project
895
+ page = await self._call_api(v2_api.find_by_project1(project_id=project_id))
896
+
897
+ results: list[CustomFieldProjectWithValuesDto] = []
898
+
899
+ from src.client.generated.models.custom_field_value_dto import CustomFieldValueDto
900
+
901
+ for cf_proj in page.content or []:
902
+ if not cf_proj.custom_field or cf_proj.custom_field.id is None:
903
+ continue
904
+
905
+ # 2. Get values for each field
906
+ try:
907
+ values_page = await self._call_api(
908
+ val_api.find_all22(project_id=project_id, custom_field_id=cf_proj.custom_field.id)
909
+ )
910
+
911
+ allowed_values = [CustomFieldValueDto(id=v.id, name=v.name) for v in values_page.content or []]
912
+
913
+ results.append(
914
+ CustomFieldProjectWithValuesDto(
915
+ custom_field=cf_proj, # Wait, CustomFieldProjectWithValuesDto expect CustomFieldProjectDto
916
+ values=allowed_values,
917
+ )
918
+ )
919
+ except AllureAPIError as e:
920
+ # If fetching values fails for one field, log and continue
921
+ logger.warning(f"Failed to fetch values for custom field {cf_proj.custom_field.name}: {e}")
922
+ results.append(CustomFieldProjectWithValuesDto(custom_field=cf_proj, values=[]))
923
+
924
+ return results
925
+
821
926
  async def delete_scenario_step(self, step_id: int) -> None:
822
927
  """Delete a scenario step.
823
928
 
@@ -5,7 +5,7 @@ The `src.client.generated` package is automatically generated by the [OpenAPI Ge
5
5
 
6
6
  - API version: 25.4.1
7
7
  - Package version: 1.0.0
8
- - Generator version: 7.18.0
8
+ - Generator version: 7.19.0
9
9
  - Build package: org.openapitools.codegen.languages.PythonClientCodegen
10
10
 
11
11
  ## Requirements.
@@ -47,15 +47,16 @@ configuration = src.client.generated.Configuration(
47
47
  # Enter a context with an instance of the API client
48
48
  async with src.client.generated.ApiClient(configuration) as api_client:
49
49
  # Create an instance of the API class
50
- api_instance = src.client.generated.LaunchControllerApi(api_client)
51
- id = 56 # int |
52
- launch_test_cases_add_dto = src.client.generated.LaunchTestCasesAddDto() # LaunchTestCasesAddDto |
50
+ api_instance = src.client.generated.CustomFieldControllerApi(api_client)
51
+ id = [56] # List[int] |
53
52
 
54
53
  try:
55
- # Add test cases to launch
56
- await api_instance.add_test_cases(id, launch_test_cases_add_dto)
54
+ # Count custom fields usage in projects
55
+ api_response = await api_instance.count_usage(id)
56
+ print("The response of CustomFieldControllerApi->count_usage:\n")
57
+ pprint(api_response)
57
58
  except ApiException as e:
58
- print("Exception when calling LaunchControllerApi->add_test_cases: %s\n" % e)
59
+ print("Exception when calling CustomFieldControllerApi->count_usage: %s\n" % e)
59
60
 
60
61
  ```
61
62
 
@@ -65,6 +66,47 @@ All URIs are relative to *http://localhost*
65
66
 
66
67
  Class | Method | HTTP request | Description
67
68
  ------------ | ------------- | ------------- | -------------
69
+ *CustomFieldControllerApi* | [**count_usage**](src/client/generated/docs/CustomFieldControllerApi.md#count_usage) | **GET** /api/cf/count-usage | Count custom fields usage in projects
70
+ *CustomFieldControllerApi* | [**create52**](src/client/generated/docs/CustomFieldControllerApi.md#create52) | **POST** /api/cf |
71
+ *CustomFieldControllerApi* | [**delete43**](src/client/generated/docs/CustomFieldControllerApi.md#delete43) | **DELETE** /api/cf/{id} |
72
+ *CustomFieldControllerApi* | [**find_by_project**](src/client/generated/docs/CustomFieldControllerApi.md#find_by_project) | **GET** /api/cf | Deprecated. Use GET /api/project/{projectId}/cf instead
73
+ *CustomFieldControllerApi* | [**find_one37**](src/client/generated/docs/CustomFieldControllerApi.md#find_one37) | **GET** /api/cf/{id} |
74
+ *CustomFieldControllerApi* | [**merge4**](src/client/generated/docs/CustomFieldControllerApi.md#merge4) | **POST** /api/cf/merge |
75
+ *CustomFieldControllerApi* | [**patch48**](src/client/generated/docs/CustomFieldControllerApi.md#patch48) | **PATCH** /api/cf/{id} |
76
+ *CustomFieldControllerApi* | [**set_archived**](src/client/generated/docs/CustomFieldControllerApi.md#set_archived) | **POST** /api/cf/{id}/archived | Soft delete custom field
77
+ *CustomFieldControllerApi* | [**suggest22**](src/client/generated/docs/CustomFieldControllerApi.md#suggest22) | **GET** /api/cf/suggest |
78
+ *CustomFieldProjectControllerApi* | [**add2**](src/client/generated/docs/CustomFieldProjectControllerApi.md#add2) | **POST** /api/cfproject/add | Add custom field to projects
79
+ *CustomFieldProjectControllerApi* | [**add_to_project**](src/client/generated/docs/CustomFieldProjectControllerApi.md#add_to_project) | **POST** /api/cfproject/add-to-project | Add custom fields to project
80
+ *CustomFieldProjectControllerApi* | [**cf_delta1**](src/client/generated/docs/CustomFieldProjectControllerApi.md#cf_delta1) | **POST** /api/cfproject/delta | Find missing custom fields
81
+ *CustomFieldProjectControllerApi* | [**find_one45**](src/client/generated/docs/CustomFieldProjectControllerApi.md#find_one45) | **GET** /api/cfproject |
82
+ *CustomFieldProjectControllerApi* | [**find_projects_by_custom_field**](src/client/generated/docs/CustomFieldProjectControllerApi.md#find_projects_by_custom_field) | **GET** /api/cfproject/in-projects | Find projects that use specified custom field
83
+ *CustomFieldProjectControllerApi* | [**remove4**](src/client/generated/docs/CustomFieldProjectControllerApi.md#remove4) | **DELETE** /api/cfproject/remove | Remove custom field from project
84
+ *CustomFieldProjectControllerApi* | [**set_default**](src/client/generated/docs/CustomFieldProjectControllerApi.md#set_default) | **POST** /api/cfproject/default | Deprecated. Use PATCH /api/project/{projectId}/cf/{cfId} instead
85
+ *CustomFieldProjectControllerApi* | [**set_required**](src/client/generated/docs/CustomFieldProjectControllerApi.md#set_required) | **POST** /api/cfproject/required | Deprecated. Use PATCH /api/project/{projectId}/cf/{cfId} instead
86
+ *CustomFieldProjectControllerV2Api* | [**find_by_project1**](src/client/generated/docs/CustomFieldProjectControllerV2Api.md#find_by_project1) | **GET** /api/project/{projectId}/cf | Find custom fields used in specified project
87
+ *CustomFieldProjectControllerV2Api* | [**patch24**](src/client/generated/docs/CustomFieldProjectControllerV2Api.md#patch24) | **PATCH** /api/project/{projectId}/cf/{cfId} |
88
+ *CustomFieldSchemaControllerApi* | [**count_mappings**](src/client/generated/docs/CustomFieldSchemaControllerApi.md#count_mappings) | **GET** /api/cfschema/count-mappings | Count custom fields mappings
89
+ *CustomFieldSchemaControllerApi* | [**create51**](src/client/generated/docs/CustomFieldSchemaControllerApi.md#create51) | **POST** /api/cfschema | Create a new custom field schema
90
+ *CustomFieldSchemaControllerApi* | [**delete42**](src/client/generated/docs/CustomFieldSchemaControllerApi.md#delete42) | **DELETE** /api/cfschema/{id} | Delete custom field schema by id
91
+ *CustomFieldSchemaControllerApi* | [**find_all45**](src/client/generated/docs/CustomFieldSchemaControllerApi.md#find_all45) | **GET** /api/cfschema | Find all custom field schemas for specified project and custom field
92
+ *CustomFieldSchemaControllerApi* | [**find_one36**](src/client/generated/docs/CustomFieldSchemaControllerApi.md#find_one36) | **GET** /api/cfschema/{id} | Find custom field schema by id
93
+ *CustomFieldSchemaControllerApi* | [**patch47**](src/client/generated/docs/CustomFieldSchemaControllerApi.md#patch47) | **PATCH** /api/cfschema/{id} | Patch custom field schema
94
+ *CustomFieldValueControllerApi* | [**create50**](src/client/generated/docs/CustomFieldValueControllerApi.md#create50) | **POST** /api/cfv | Deprecated. Use POST /api/project/{projectId}/cfv instead
95
+ *CustomFieldValueControllerApi* | [**delete41**](src/client/generated/docs/CustomFieldValueControllerApi.md#delete41) | **DELETE** /api/cfv/{id} | Delete custom field value by id
96
+ *CustomFieldValueControllerApi* | [**find_all44**](src/client/generated/docs/CustomFieldValueControllerApi.md#find_all44) | **GET** /api/cfv | Find all custom field values
97
+ *CustomFieldValueControllerApi* | [**find_one35**](src/client/generated/docs/CustomFieldValueControllerApi.md#find_one35) | **GET** /api/cfv/{id} | Find custom field value by id
98
+ *CustomFieldValueControllerApi* | [**merge_project_fields_to_existing_global_value**](src/client/generated/docs/CustomFieldValueControllerApi.md#merge_project_fields_to_existing_global_value) | **POST** /api/cfv/merge-to/{toCfvId} | Merge project custom field values into existing global
99
+ *CustomFieldValueControllerApi* | [**merge_project_fields_to_new_global_value**](src/client/generated/docs/CustomFieldValueControllerApi.md#merge_project_fields_to_new_global_value) | **POST** /api/cfv/merge | Merge project custom field values into new global
100
+ *CustomFieldValueControllerApi* | [**patch46**](src/client/generated/docs/CustomFieldValueControllerApi.md#patch46) | **PATCH** /api/cfv/{id} | Patch custom field value
101
+ *CustomFieldValueControllerApi* | [**rename_custom_field_value**](src/client/generated/docs/CustomFieldValueControllerApi.md#rename_custom_field_value) | **POST** /api/cfv/{id}/rename | Deprecated. Use PUT /api/project/{projectId}/cfv/{cvfId}/name instead
102
+ *CustomFieldValueControllerApi* | [**suggest21**](src/client/generated/docs/CustomFieldValueControllerApi.md#suggest21) | **GET** /api/cfv/suggest | Suggest custom field values
103
+ *CustomFieldValueControllerApi* | [**suggest_v2**](src/client/generated/docs/CustomFieldValueControllerApi.md#suggest_v2) | **GET** /api/cfv/suggest/{projectId} | Suggest custom field values
104
+ *CustomFieldValueProjectControllerApi* | [**create26**](src/client/generated/docs/CustomFieldValueProjectControllerApi.md#create26) | **POST** /api/project/{projectId}/cfv | Create a new custom field value for specified project
105
+ *CustomFieldValueProjectControllerApi* | [**delete47**](src/client/generated/docs/CustomFieldValueProjectControllerApi.md#delete47) | **DELETE** /api/project/{projectId}/cfv/{id} | Delete specified custom field value for specified project
106
+ *CustomFieldValueProjectControllerApi* | [**find_all22**](src/client/generated/docs/CustomFieldValueProjectControllerApi.md#find_all22) | **GET** /api/project/{projectId}/cfv | Find all custom field values for specified project
107
+ *CustomFieldValueProjectControllerApi* | [**merge_custom_fields_to_existing_record**](src/client/generated/docs/CustomFieldValueProjectControllerApi.md#merge_custom_fields_to_existing_record) | **POST** /api/project/{projectId}/cfv/merge-to/{toCfvId} | Merge custom field values to existing record by id
108
+ *CustomFieldValueProjectControllerApi* | [**merge_custom_fields_to_new_record**](src/client/generated/docs/CustomFieldValueProjectControllerApi.md#merge_custom_fields_to_new_record) | **POST** /api/project/{projectId}/cfv/merge | Merge custom field values to new record
109
+ *CustomFieldValueProjectControllerApi* | [**patch23**](src/client/generated/docs/CustomFieldValueProjectControllerApi.md#patch23) | **PATCH** /api/project/{projectId}/cfv/{cfvId} | Patch specified custom field value, test results won&#39;t be affected
68
110
  *LaunchControllerApi* | [**add_test_cases**](src/client/generated/docs/LaunchControllerApi.md#add_test_cases) | **POST** /api/launch/{id}/testcase/add | Add test cases to launch
69
111
  *LaunchControllerApi* | [**add_test_plan**](src/client/generated/docs/LaunchControllerApi.md#add_test_plan) | **POST** /api/launch/{id}/testplan/add | Add test plan to launch
70
112
  *LaunchControllerApi* | [**apply_defect_matchers**](src/client/generated/docs/LaunchControllerApi.md#apply_defect_matchers) | **POST** /api/launch/{id}/defect/apply | Apply defect matchers to launch
@@ -96,6 +138,16 @@ Class | Method | HTTP request | Description
96
138
  *LaunchControllerApi* | [**suggest_jobs**](src/client/generated/docs/LaunchControllerApi.md#suggest_jobs) | **GET** /api/launch/{id}/job/suggest | Suggest launch jobs
97
139
  *LaunchSearchControllerApi* | [**search2**](src/client/generated/docs/LaunchSearchControllerApi.md#search2) | **GET** /api/launch/__search | Find all launches by given AQL
98
140
  *LaunchSearchControllerApi* | [**validate_query2**](src/client/generated/docs/LaunchSearchControllerApi.md#validate_query2) | **GET** /api/launch/query/validate | Find all launches by given AQL
141
+ *ProjectControllerApi* | [**calculate_stats**](src/client/generated/docs/ProjectControllerApi.md#calculate_stats) | **GET** /api/project/{id}/stats | Find project stats by id
142
+ *ProjectControllerApi* | [**count_test_cases_in_projects**](src/client/generated/docs/ProjectControllerApi.md#count_test_cases_in_projects) | **GET** /api/project/count-test-cases | Count test cases in projects that use specified custom field
143
+ *ProjectControllerApi* | [**create25**](src/client/generated/docs/ProjectControllerApi.md#create25) | **POST** /api/project | Create a new project
144
+ *ProjectControllerApi* | [**delete23**](src/client/generated/docs/ProjectControllerApi.md#delete23) | **DELETE** /api/project/{id} | Delete project by id
145
+ *ProjectControllerApi* | [**find_all21**](src/client/generated/docs/ProjectControllerApi.md#find_all21) | **GET** /api/project | Find all projects
146
+ *ProjectControllerApi* | [**find_by_custom_field**](src/client/generated/docs/ProjectControllerApi.md#find_by_custom_field) | **GET** /api/project/customfield | Find projects that use/do not use specified custom field
147
+ *ProjectControllerApi* | [**find_one19**](src/client/generated/docs/ProjectControllerApi.md#find_one19) | **GET** /api/project/{id} | Find project by id
148
+ *ProjectControllerApi* | [**get_suggest**](src/client/generated/docs/ProjectControllerApi.md#get_suggest) | **GET** /api/project/suggest | Suggest projects
149
+ *ProjectControllerApi* | [**patch25**](src/client/generated/docs/ProjectControllerApi.md#patch25) | **PATCH** /api/project/{id} | Patch project
150
+ *ProjectControllerApi* | [**set_favorite**](src/client/generated/docs/ProjectControllerApi.md#set_favorite) | **POST** /api/project/{id}/favorite | Mark project as favorite
99
151
  *SharedStepAttachmentControllerApi* | [**create21**](src/client/generated/docs/SharedStepAttachmentControllerApi.md#create21) | **POST** /api/sharedstep/attachment | Upload new shared step attachments
100
152
  *SharedStepAttachmentControllerApi* | [**delete19**](src/client/generated/docs/SharedStepAttachmentControllerApi.md#delete19) | **DELETE** /api/sharedstep/attachment/{id} | Delete shared step attachment
101
153
  *SharedStepAttachmentControllerApi* | [**find_all17**](src/client/generated/docs/SharedStepAttachmentControllerApi.md#find_all17) | **GET** /api/sharedstep/attachment | Find attachments for shared step
@@ -118,6 +170,12 @@ Class | Method | HTTP request | Description
118
170
  *SharedStepScenarioControllerApi* | [**patch_by_id1**](src/client/generated/docs/SharedStepScenarioControllerApi.md#patch_by_id1) | **PATCH** /api/sharedstep/step/{id} | Patch a specified scenario step
119
171
  *SharedStepScenarioControllerApi* | [**set_shared_step_scenario**](src/client/generated/docs/SharedStepScenarioControllerApi.md#set_shared_step_scenario) | **POST** /api/sharedstep/{id}/scenario | Set new scenario for ss
120
172
  *SharedStepScenarioControllerApi* | [**usage**](src/client/generated/docs/SharedStepScenarioControllerApi.md#usage) | **GET** /api/sharedstep/{id}/usage | Get testcases with usage of shared step
173
+ *StatusControllerApi* | [**create18**](src/client/generated/docs/StatusControllerApi.md#create18) | **POST** /api/status | Create a new status
174
+ *StatusControllerApi* | [**delete17**](src/client/generated/docs/StatusControllerApi.md#delete17) | **DELETE** /api/status/{id} | Delete status by id
175
+ *StatusControllerApi* | [**find_all15**](src/client/generated/docs/StatusControllerApi.md#find_all15) | **GET** /api/status | Find all statuses
176
+ *StatusControllerApi* | [**find_one14**](src/client/generated/docs/StatusControllerApi.md#find_one14) | **GET** /api/status/{id} | Find status by id
177
+ *StatusControllerApi* | [**patch17**](src/client/generated/docs/StatusControllerApi.md#patch17) | **PATCH** /api/status/{id} | Patch status
178
+ *StatusControllerApi* | [**suggest8**](src/client/generated/docs/StatusControllerApi.md#suggest8) | **GET** /api/status/suggest | Suggest statuses
121
179
  *TestCaseAttachmentControllerApi* | [**create16**](src/client/generated/docs/TestCaseAttachmentControllerApi.md#create16) | **POST** /api/testcase/attachment | Upload new test case attachments
122
180
  *TestCaseAttachmentControllerApi* | [**delete15**](src/client/generated/docs/TestCaseAttachmentControllerApi.md#delete15) | **DELETE** /api/testcase/attachment/{id} | Delete test case attachment
123
181
  *TestCaseAttachmentControllerApi* | [**find_all13**](src/client/generated/docs/TestCaseAttachmentControllerApi.md#find_all13) | **GET** /api/testcase/attachment | Find attachments for test case
@@ -18,11 +18,19 @@ __version__ = "1.0.0"
18
18
 
19
19
  # Define package exports
20
20
  __all__ = [
21
+ "CustomFieldControllerApi",
22
+ "CustomFieldProjectControllerApi",
23
+ "CustomFieldProjectControllerV2Api",
24
+ "CustomFieldSchemaControllerApi",
25
+ "CustomFieldValueControllerApi",
26
+ "CustomFieldValueProjectControllerApi",
21
27
  "LaunchControllerApi",
22
28
  "LaunchSearchControllerApi",
29
+ "ProjectControllerApi",
23
30
  "SharedStepAttachmentControllerApi",
24
31
  "SharedStepControllerApi",
25
32
  "SharedStepScenarioControllerApi",
33
+ "StatusControllerApi",
26
34
  "TestCaseAttachmentControllerApi",
27
35
  "TestCaseBulkControllerApi",
28
36
  "TestCaseControllerApi",
@@ -726,11 +734,19 @@ __all__ = [
726
734
  ]
727
735
 
728
736
  # import apis into sdk package
737
+ from src.client.generated.api.custom_field_controller_api import CustomFieldControllerApi as CustomFieldControllerApi
738
+ from src.client.generated.api.custom_field_project_controller_api import CustomFieldProjectControllerApi as CustomFieldProjectControllerApi
739
+ from src.client.generated.api.custom_field_project_controller_v2_api import CustomFieldProjectControllerV2Api as CustomFieldProjectControllerV2Api
740
+ from src.client.generated.api.custom_field_schema_controller_api import CustomFieldSchemaControllerApi as CustomFieldSchemaControllerApi
741
+ from src.client.generated.api.custom_field_value_controller_api import CustomFieldValueControllerApi as CustomFieldValueControllerApi
742
+ from src.client.generated.api.custom_field_value_project_controller_api import CustomFieldValueProjectControllerApi as CustomFieldValueProjectControllerApi
729
743
  from src.client.generated.api.launch_controller_api import LaunchControllerApi as LaunchControllerApi
730
744
  from src.client.generated.api.launch_search_controller_api import LaunchSearchControllerApi as LaunchSearchControllerApi
745
+ from src.client.generated.api.project_controller_api import ProjectControllerApi as ProjectControllerApi
731
746
  from src.client.generated.api.shared_step_attachment_controller_api import SharedStepAttachmentControllerApi as SharedStepAttachmentControllerApi
732
747
  from src.client.generated.api.shared_step_controller_api import SharedStepControllerApi as SharedStepControllerApi
733
748
  from src.client.generated.api.shared_step_scenario_controller_api import SharedStepScenarioControllerApi as SharedStepScenarioControllerApi
749
+ from src.client.generated.api.status_controller_api import StatusControllerApi as StatusControllerApi
734
750
  from src.client.generated.api.test_case_attachment_controller_api import TestCaseAttachmentControllerApi as TestCaseAttachmentControllerApi
735
751
  from src.client.generated.api.test_case_bulk_controller_api import TestCaseBulkControllerApi as TestCaseBulkControllerApi
736
752
  from src.client.generated.api.test_case_controller_api import TestCaseControllerApi as TestCaseControllerApi
@@ -1,11 +1,19 @@
1
1
  # flake8: noqa
2
2
 
3
3
  # import apis into api package
4
+ from src.client.generated.api.custom_field_controller_api import CustomFieldControllerApi
5
+ from src.client.generated.api.custom_field_project_controller_api import CustomFieldProjectControllerApi
6
+ from src.client.generated.api.custom_field_project_controller_v2_api import CustomFieldProjectControllerV2Api
7
+ from src.client.generated.api.custom_field_schema_controller_api import CustomFieldSchemaControllerApi
8
+ from src.client.generated.api.custom_field_value_controller_api import CustomFieldValueControllerApi
9
+ from src.client.generated.api.custom_field_value_project_controller_api import CustomFieldValueProjectControllerApi
4
10
  from src.client.generated.api.launch_controller_api import LaunchControllerApi
5
11
  from src.client.generated.api.launch_search_controller_api import LaunchSearchControllerApi
12
+ from src.client.generated.api.project_controller_api import ProjectControllerApi
6
13
  from src.client.generated.api.shared_step_attachment_controller_api import SharedStepAttachmentControllerApi
7
14
  from src.client.generated.api.shared_step_controller_api import SharedStepControllerApi
8
15
  from src.client.generated.api.shared_step_scenario_controller_api import SharedStepScenarioControllerApi
16
+ from src.client.generated.api.status_controller_api import StatusControllerApi
9
17
  from src.client.generated.api.test_case_attachment_controller_api import TestCaseAttachmentControllerApi
10
18
  from src.client.generated.api.test_case_bulk_controller_api import TestCaseBulkControllerApi
11
19
  from src.client.generated.api.test_case_controller_api import TestCaseControllerApi