lucius-mcp 0.2.2__py3-none-any.whl → 0.3.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 (38) hide show
  1. {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/METADATA +8 -1
  2. {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/RECORD +38 -19
  3. src/client/__init__.py +10 -0
  4. src/client/client.py +289 -8
  5. src/client/generated/README.md +11 -0
  6. src/client/generated/__init__.py +4 -0
  7. src/client/generated/api/__init__.py +2 -0
  8. src/client/generated/api/test_layer_controller_api.py +1746 -0
  9. src/client/generated/api/test_layer_schema_controller_api.py +1415 -0
  10. src/client/generated/docs/TestLayerControllerApi.md +407 -0
  11. src/client/generated/docs/TestLayerSchemaControllerApi.md +350 -0
  12. src/client/overridden/test_case_custom_fields_v2.py +254 -0
  13. src/services/__init__.py +8 -0
  14. src/services/launch_service.py +278 -0
  15. src/services/search_service.py +1 -1
  16. src/services/test_case_service.py +512 -92
  17. src/services/test_layer_service.py +416 -0
  18. src/tools/__init__.py +35 -0
  19. src/tools/create_test_case.py +38 -19
  20. src/tools/create_test_layer.py +33 -0
  21. src/tools/create_test_layer_schema.py +39 -0
  22. src/tools/delete_test_layer.py +31 -0
  23. src/tools/delete_test_layer_schema.py +31 -0
  24. src/tools/get_custom_fields.py +2 -1
  25. src/tools/get_test_case_custom_fields.py +34 -0
  26. src/tools/launches.py +112 -0
  27. src/tools/list_test_layer_schemas.py +43 -0
  28. src/tools/list_test_layers.py +38 -0
  29. src/tools/search.py +6 -3
  30. src/tools/test_layers.py +21 -0
  31. src/tools/update_test_case.py +48 -23
  32. src/tools/update_test_layer.py +33 -0
  33. src/tools/update_test_layer_schema.py +40 -0
  34. src/utils/__init__.py +4 -0
  35. src/utils/links.py +13 -0
  36. {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/WHEEL +0 -0
  37. {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/entry_points.txt +0 -0
  38. {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,350 @@
1
+ # src.client.generated.TestLayerSchemaControllerApi
2
+
3
+ All URIs are relative to *http://localhost*
4
+
5
+ Method | HTTP request | Description
6
+ ------------- | ------------- | -------------
7
+ [**create8**](TestLayerSchemaControllerApi.md#create8) | **POST** /api/testlayerschema | Create a new test layer schema
8
+ [**delete8**](TestLayerSchemaControllerApi.md#delete8) | **DELETE** /api/testlayerschema/{id} | Delete test layer schema by id
9
+ [**find_all6**](TestLayerSchemaControllerApi.md#find_all6) | **GET** /api/testlayerschema | Find all test layer schemas for given project
10
+ [**find_one7**](TestLayerSchemaControllerApi.md#find_one7) | **GET** /api/testlayerschema/{id} | Find test layer schema by id
11
+ [**patch8**](TestLayerSchemaControllerApi.md#patch8) | **PATCH** /api/testlayerschema/{id} | Patch test layer schema
12
+
13
+
14
+ # **create8**
15
+ > TestLayerSchemaDto create8(test_layer_schema_create_dto)
16
+
17
+ Create a new test layer schema
18
+
19
+ ### Example
20
+
21
+
22
+ ```python
23
+ import src.client.generated
24
+ from src.client.generated.models.test_layer_schema_create_dto import TestLayerSchemaCreateDto
25
+ from src.client.generated.models.test_layer_schema_dto import TestLayerSchemaDto
26
+ from src.client.generated.rest import ApiException
27
+ from pprint import pprint
28
+
29
+ # Defining the host is optional and defaults to http://localhost
30
+ # See configuration.py for a list of all supported configuration parameters.
31
+ configuration = src.client.generated.Configuration(
32
+ host = "http://localhost"
33
+ )
34
+
35
+
36
+ # Enter a context with an instance of the API client
37
+ async with src.client.generated.ApiClient(configuration) as api_client:
38
+ # Create an instance of the API class
39
+ api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
40
+ test_layer_schema_create_dto = src.client.generated.TestLayerSchemaCreateDto() # TestLayerSchemaCreateDto |
41
+
42
+ try:
43
+ # Create a new test layer schema
44
+ api_response = await api_instance.create8(test_layer_schema_create_dto)
45
+ print("The response of TestLayerSchemaControllerApi->create8:\n")
46
+ pprint(api_response)
47
+ except Exception as e:
48
+ print("Exception when calling TestLayerSchemaControllerApi->create8: %s\n" % e)
49
+ ```
50
+
51
+
52
+
53
+ ### Parameters
54
+
55
+
56
+ Name | Type | Description | Notes
57
+ ------------- | ------------- | ------------- | -------------
58
+ **test_layer_schema_create_dto** | [**TestLayerSchemaCreateDto**](TestLayerSchemaCreateDto.md)| |
59
+
60
+ ### Return type
61
+
62
+ [**TestLayerSchemaDto**](TestLayerSchemaDto.md)
63
+
64
+ ### Authorization
65
+
66
+ No authorization required
67
+
68
+ ### HTTP request headers
69
+
70
+ - **Content-Type**: application/json
71
+ - **Accept**: */*
72
+
73
+ ### HTTP response details
74
+
75
+ | Status code | Description | Response headers |
76
+ |-------------|-------------|------------------|
77
+ **200** | OK | - |
78
+
79
+ [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
80
+
81
+ # **delete8**
82
+ > delete8(id)
83
+
84
+ Delete test layer schema by id
85
+
86
+ ### Example
87
+
88
+
89
+ ```python
90
+ import src.client.generated
91
+ from src.client.generated.rest import ApiException
92
+ from pprint import pprint
93
+
94
+ # Defining the host is optional and defaults to http://localhost
95
+ # See configuration.py for a list of all supported configuration parameters.
96
+ configuration = src.client.generated.Configuration(
97
+ host = "http://localhost"
98
+ )
99
+
100
+
101
+ # Enter a context with an instance of the API client
102
+ async with src.client.generated.ApiClient(configuration) as api_client:
103
+ # Create an instance of the API class
104
+ api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
105
+ id = 56 # int |
106
+
107
+ try:
108
+ # Delete test layer schema by id
109
+ await api_instance.delete8(id)
110
+ except Exception as e:
111
+ print("Exception when calling TestLayerSchemaControllerApi->delete8: %s\n" % e)
112
+ ```
113
+
114
+
115
+
116
+ ### Parameters
117
+
118
+
119
+ Name | Type | Description | Notes
120
+ ------------- | ------------- | ------------- | -------------
121
+ **id** | **int**| |
122
+
123
+ ### Return type
124
+
125
+ void (empty response body)
126
+
127
+ ### Authorization
128
+
129
+ No authorization required
130
+
131
+ ### HTTP request headers
132
+
133
+ - **Content-Type**: Not defined
134
+ - **Accept**: Not defined
135
+
136
+ ### HTTP response details
137
+
138
+ | Status code | Description | Response headers |
139
+ |-------------|-------------|------------------|
140
+ **204** | No Content | - |
141
+
142
+ [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
143
+
144
+ # **find_all6**
145
+ > PageTestLayerSchemaDto find_all6(project_id, page=page, size=size, sort=sort)
146
+
147
+ Find all test layer schemas for given project
148
+
149
+ ### Example
150
+
151
+
152
+ ```python
153
+ import src.client.generated
154
+ from src.client.generated.models.page_test_layer_schema_dto import PageTestLayerSchemaDto
155
+ from src.client.generated.rest import ApiException
156
+ from pprint import pprint
157
+
158
+ # Defining the host is optional and defaults to http://localhost
159
+ # See configuration.py for a list of all supported configuration parameters.
160
+ configuration = src.client.generated.Configuration(
161
+ host = "http://localhost"
162
+ )
163
+
164
+
165
+ # Enter a context with an instance of the API client
166
+ async with src.client.generated.ApiClient(configuration) as api_client:
167
+ # Create an instance of the API class
168
+ api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
169
+ project_id = 56 # int |
170
+ page = 0 # int | Zero-based page index (0..N) (optional) (default to 0)
171
+ size = 10 # int | The size of the page to be returned (optional) (default to 10)
172
+ sort = [id,ASC] # List[str] | Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional) (default to [id,ASC])
173
+
174
+ try:
175
+ # Find all test layer schemas for given project
176
+ api_response = await api_instance.find_all6(project_id, page=page, size=size, sort=sort)
177
+ print("The response of TestLayerSchemaControllerApi->find_all6:\n")
178
+ pprint(api_response)
179
+ except Exception as e:
180
+ print("Exception when calling TestLayerSchemaControllerApi->find_all6: %s\n" % e)
181
+ ```
182
+
183
+
184
+
185
+ ### Parameters
186
+
187
+
188
+ Name | Type | Description | Notes
189
+ ------------- | ------------- | ------------- | -------------
190
+ **project_id** | **int**| |
191
+ **page** | **int**| Zero-based page index (0..N) | [optional] [default to 0]
192
+ **size** | **int**| The size of the page to be returned | [optional] [default to 10]
193
+ **sort** | [**List[str]**](str.md)| Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional] [default to [id,ASC]]
194
+
195
+ ### Return type
196
+
197
+ [**PageTestLayerSchemaDto**](PageTestLayerSchemaDto.md)
198
+
199
+ ### Authorization
200
+
201
+ No authorization required
202
+
203
+ ### HTTP request headers
204
+
205
+ - **Content-Type**: Not defined
206
+ - **Accept**: */*
207
+
208
+ ### HTTP response details
209
+
210
+ | Status code | Description | Response headers |
211
+ |-------------|-------------|------------------|
212
+ **200** | OK | - |
213
+
214
+ [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
215
+
216
+ # **find_one7**
217
+ > TestLayerSchemaDto find_one7(id)
218
+
219
+ Find test layer schema by id
220
+
221
+ ### Example
222
+
223
+
224
+ ```python
225
+ import src.client.generated
226
+ from src.client.generated.models.test_layer_schema_dto import TestLayerSchemaDto
227
+ from src.client.generated.rest import ApiException
228
+ from pprint import pprint
229
+
230
+ # Defining the host is optional and defaults to http://localhost
231
+ # See configuration.py for a list of all supported configuration parameters.
232
+ configuration = src.client.generated.Configuration(
233
+ host = "http://localhost"
234
+ )
235
+
236
+
237
+ # Enter a context with an instance of the API client
238
+ async with src.client.generated.ApiClient(configuration) as api_client:
239
+ # Create an instance of the API class
240
+ api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
241
+ id = 56 # int |
242
+
243
+ try:
244
+ # Find test layer schema by id
245
+ api_response = await api_instance.find_one7(id)
246
+ print("The response of TestLayerSchemaControllerApi->find_one7:\n")
247
+ pprint(api_response)
248
+ except Exception as e:
249
+ print("Exception when calling TestLayerSchemaControllerApi->find_one7: %s\n" % e)
250
+ ```
251
+
252
+
253
+
254
+ ### Parameters
255
+
256
+
257
+ Name | Type | Description | Notes
258
+ ------------- | ------------- | ------------- | -------------
259
+ **id** | **int**| |
260
+
261
+ ### Return type
262
+
263
+ [**TestLayerSchemaDto**](TestLayerSchemaDto.md)
264
+
265
+ ### Authorization
266
+
267
+ No authorization required
268
+
269
+ ### HTTP request headers
270
+
271
+ - **Content-Type**: Not defined
272
+ - **Accept**: */*
273
+
274
+ ### HTTP response details
275
+
276
+ | Status code | Description | Response headers |
277
+ |-------------|-------------|------------------|
278
+ **200** | OK | - |
279
+
280
+ [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
281
+
282
+ # **patch8**
283
+ > TestLayerSchemaDto patch8(id, test_layer_schema_patch_dto)
284
+
285
+ Patch test layer schema
286
+
287
+ ### Example
288
+
289
+
290
+ ```python
291
+ import src.client.generated
292
+ from src.client.generated.models.test_layer_schema_dto import TestLayerSchemaDto
293
+ from src.client.generated.models.test_layer_schema_patch_dto import TestLayerSchemaPatchDto
294
+ from src.client.generated.rest import ApiException
295
+ from pprint import pprint
296
+
297
+ # Defining the host is optional and defaults to http://localhost
298
+ # See configuration.py for a list of all supported configuration parameters.
299
+ configuration = src.client.generated.Configuration(
300
+ host = "http://localhost"
301
+ )
302
+
303
+
304
+ # Enter a context with an instance of the API client
305
+ async with src.client.generated.ApiClient(configuration) as api_client:
306
+ # Create an instance of the API class
307
+ api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
308
+ id = 56 # int |
309
+ test_layer_schema_patch_dto = src.client.generated.TestLayerSchemaPatchDto() # TestLayerSchemaPatchDto |
310
+
311
+ try:
312
+ # Patch test layer schema
313
+ api_response = await api_instance.patch8(id, test_layer_schema_patch_dto)
314
+ print("The response of TestLayerSchemaControllerApi->patch8:\n")
315
+ pprint(api_response)
316
+ except Exception as e:
317
+ print("Exception when calling TestLayerSchemaControllerApi->patch8: %s\n" % e)
318
+ ```
319
+
320
+
321
+
322
+ ### Parameters
323
+
324
+
325
+ Name | Type | Description | Notes
326
+ ------------- | ------------- | ------------- | -------------
327
+ **id** | **int**| |
328
+ **test_layer_schema_patch_dto** | [**TestLayerSchemaPatchDto**](TestLayerSchemaPatchDto.md)| |
329
+
330
+ ### Return type
331
+
332
+ [**TestLayerSchemaDto**](TestLayerSchemaDto.md)
333
+
334
+ ### Authorization
335
+
336
+ No authorization required
337
+
338
+ ### HTTP request headers
339
+
340
+ - **Content-Type**: application/json
341
+ - **Accept**: */*
342
+
343
+ ### HTTP response details
344
+
345
+ | Status code | Description | Response headers |
346
+ |-------------|-------------|------------------|
347
+ **200** | OK | - |
348
+
349
+ [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
350
+
@@ -0,0 +1,254 @@
1
+ from typing import Annotated
2
+
3
+ from pydantic import Field, StrictFloat, StrictInt, StrictStr, validate_call
4
+
5
+ from src.client.generated.api.test_case_custom_field_controller_api import TestCaseCustomFieldControllerApi
6
+ from src.client.generated.api_client import ApiClient, RequestSerialized
7
+ from src.client.generated.models.custom_field_project_with_values_dto import CustomFieldProjectWithValuesDto
8
+ from src.client.generated.models.custom_field_value_with_cf_dto import CustomFieldValueWithCfDto
9
+
10
+
11
+ class TestCaseCustomFieldV2ControllerApi(TestCaseCustomFieldControllerApi):
12
+ """NOTE: This class a manual override for the auto generated by OpenAPI Generator
13
+ Ref: https://openapi-generator.tech
14
+
15
+ You are allowed to edit the class manually.
16
+ """
17
+
18
+ def __init__(self, api_client: ApiClient | None = None) -> None:
19
+ if api_client is None:
20
+ api_client = ApiClient.get_default()
21
+ self.api_client = api_client
22
+ super().__init__(api_client=api_client)
23
+
24
+ @validate_call
25
+ async def get_custom_fields_with_values3(
26
+ self,
27
+ test_case_id: StrictInt,
28
+ project_id: StrictInt,
29
+ _request_timeout: None
30
+ | Annotated[StrictFloat, Field(gt=0)]
31
+ | tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]] = None,
32
+ _request_auth: dict[StrictStr, object] | None = None,
33
+ _content_type: StrictStr | None = None,
34
+ _headers: dict[StrictStr, object] | None = None,
35
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
36
+ ) -> list[CustomFieldProjectWithValuesDto]:
37
+ """Find custom fields with values for test case
38
+
39
+
40
+ :param test_case_id: (required)
41
+ :type test_case_id: int
42
+ :param project_id: (required)
43
+ :type project_id: int
44
+ :param _request_timeout: timeout setting for this request. If one
45
+ number provided, it will be total request
46
+ timeout. It can also be a pair (tuple) of
47
+ (connection, read) timeouts.
48
+ :type _request_timeout: int, tuple(int, int), optional
49
+ :param _request_auth: set to override the auth_settings for an a single
50
+ request; this effectively ignores the
51
+ authentication in the spec for a single request.
52
+ :type _request_auth: dict, optional
53
+ :param _content_type: force content-type for the request.
54
+ :type _content_type: str, Optional
55
+ :param _headers: set to override the headers for a single
56
+ request; this effectively ignores the headers
57
+ in the spec for a single request.
58
+ :type _headers: dict, optional
59
+ :param _host_index: set to override the host_index for a single
60
+ request; this effectively ignores the host_index
61
+ in the spec for a single request.
62
+ :type _host_index: int, optional
63
+ :return: Returns the result object.
64
+ """
65
+
66
+ _param = self._get_custom_fields_with_values3_serialize(
67
+ test_case_id=test_case_id,
68
+ project_id=project_id,
69
+ _request_auth=_request_auth,
70
+ _content_type=_content_type,
71
+ _headers=_headers,
72
+ _host_index=_host_index,
73
+ _query_params=[("v2", str(True))],
74
+ )
75
+
76
+ _response_types_map: dict[str, str | None] = {
77
+ "200": "List[CustomFieldProjectWithValuesDto]",
78
+ }
79
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
80
+ await response_data.read()
81
+ return self.api_client.response_deserialize(
82
+ response_data=response_data,
83
+ response_types_map=_response_types_map,
84
+ ).data
85
+
86
+ def _get_custom_fields_with_values3_serialize(
87
+ self,
88
+ test_case_id,
89
+ project_id,
90
+ _request_auth,
91
+ _content_type,
92
+ _headers,
93
+ _host_index,
94
+ _query_params: list[tuple[str, str]] | None = None,
95
+ ) -> RequestSerialized:
96
+ if _query_params is None:
97
+ _query_params = []
98
+ _host = None
99
+
100
+ _collection_formats: dict[str, str] = {}
101
+
102
+ _path_params: dict[str, str] = {}
103
+ _header_params: dict[str, str | None] = _headers or {}
104
+ _form_params: list[tuple[str, str]] = []
105
+ _files: dict[str, str | bytes | list[str] | list[bytes] | list[tuple[str, bytes]]] = {}
106
+ _body_params: bytes | None = None
107
+
108
+ # process the path parameters
109
+ if test_case_id is not None:
110
+ _path_params["testCaseId"] = test_case_id
111
+ # process the query parameters
112
+ if project_id is not None:
113
+ _query_params.append(("projectId", project_id))
114
+
115
+ # set the HTTP header `Accept`
116
+ if "Accept" not in _header_params:
117
+ _header_params["Accept"] = self.api_client.select_header_accept(["*/*"])
118
+
119
+ # authentication setting
120
+ _auth_settings: list[str] = []
121
+
122
+ return self.api_client.param_serialize(
123
+ method="GET",
124
+ resource_path="/api/testcase/{testCaseId}/cfv",
125
+ path_params=_path_params,
126
+ query_params=_query_params,
127
+ header_params=_header_params,
128
+ body=_body_params,
129
+ post_params=_form_params,
130
+ files=_files,
131
+ auth_settings=_auth_settings,
132
+ collection_formats=_collection_formats,
133
+ _host=_host,
134
+ _request_auth=_request_auth,
135
+ )
136
+
137
+ @validate_call
138
+ async def update_cfvs_of_test_case(
139
+ self,
140
+ test_case_id: StrictInt,
141
+ custom_field_with_values_dto: list[CustomFieldValueWithCfDto],
142
+ _request_timeout: None
143
+ | Annotated[StrictFloat, Field(gt=0)]
144
+ | tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]] = None,
145
+ _request_auth: dict[StrictStr, object] | None = None,
146
+ _content_type: StrictStr | None = None,
147
+ _headers: dict[StrictStr, object] | None = None,
148
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
149
+ ) -> None:
150
+ """Update custom field values of test case
151
+
152
+
153
+ :param test_case_id: (required)
154
+ :type test_case_id: int
155
+ :param custom_field_with_values_dto: (required)
156
+ :type custom_field_with_values_dto: List[CustomFieldWithValuesDto]
157
+ :param _request_timeout: timeout setting for this request. If one
158
+ number provided, it will be total request
159
+ timeout. It can also be a pair (tuple) of
160
+ (connection, read) timeouts.
161
+ :type _request_timeout: int, tuple(int, int), optional
162
+ :param _request_auth: set to override the auth_settings for an a single
163
+ request; this effectively ignores the
164
+ authentication in the spec for a single request.
165
+ :type _request_auth: dict, optional
166
+ :param _content_type: force content-type for the request.
167
+ :type _content_type: str, Optional
168
+ :param _headers: set to override the headers for a single
169
+ request; this effectively ignores the headers
170
+ in the spec for a single request.
171
+ :type _headers: dict, optional
172
+ :param _host_index: set to override the host_index for a single
173
+ request; this effectively ignores the host_index
174
+ in the spec for a single request.
175
+ :type _host_index: int, optional
176
+ :return: Returns the result object.
177
+ """
178
+
179
+ _param = self._update_cfvs_of_test_case_serialize(
180
+ test_case_id=test_case_id,
181
+ custom_field_with_values_dto=custom_field_with_values_dto,
182
+ _request_auth=_request_auth,
183
+ _content_type=_content_type,
184
+ _headers=_headers,
185
+ _host_index=_host_index,
186
+ )
187
+
188
+ _response_types_map: dict[str, str | None] = {
189
+ "200": None,
190
+ }
191
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
192
+ await response_data.read()
193
+ return self.api_client.response_deserialize(
194
+ response_data=response_data,
195
+ response_types_map=_response_types_map,
196
+ ).data
197
+
198
+ def _update_cfvs_of_test_case_serialize(
199
+ self,
200
+ test_case_id,
201
+ custom_field_with_values_dto,
202
+ _request_auth,
203
+ _content_type,
204
+ _headers,
205
+ _host_index,
206
+ ) -> RequestSerialized:
207
+ _host = None
208
+
209
+ _collection_formats: dict[str, str] = {
210
+ "CustomFieldValueWithCfDto": "",
211
+ }
212
+
213
+ _path_params: dict[str, str] = {}
214
+ _query_params: list[tuple[str, str]] = []
215
+ _header_params: dict[str, str | None] = _headers or {}
216
+ _form_params: list[tuple[str, str]] = []
217
+ _files: dict[str, str | bytes | list[str] | list[bytes] | list[tuple[str, bytes]]] = {}
218
+ _body_params: bytes | None = None
219
+
220
+ # process the path parameters
221
+ if test_case_id is not None:
222
+ _path_params["testCaseId"] = test_case_id
223
+ # process the query parameters
224
+ # process the header parameters
225
+ # process the form parameters
226
+ # process the body parameter
227
+ if custom_field_with_values_dto is not None:
228
+ _body_params = custom_field_with_values_dto
229
+
230
+ # set the HTTP header `Content-Type`
231
+ if _content_type:
232
+ _header_params["Content-Type"] = _content_type
233
+ else:
234
+ _default_content_type = self.api_client.select_header_content_type(["application/json"])
235
+ if _default_content_type is not None:
236
+ _header_params["Content-Type"] = _default_content_type
237
+
238
+ # authentication setting
239
+ _auth_settings: list[str] = []
240
+
241
+ return self.api_client.param_serialize(
242
+ method="POST",
243
+ resource_path="/api/testcase/{testCaseId}/cfv",
244
+ path_params=_path_params,
245
+ query_params=_query_params,
246
+ header_params=_header_params,
247
+ body=_body_params,
248
+ post_params=_form_params,
249
+ files=_files,
250
+ auth_settings=_auth_settings,
251
+ collection_formats=_collection_formats,
252
+ _host=_host,
253
+ _request_auth=_request_auth,
254
+ )
src/services/__init__.py CHANGED
@@ -1 +1,9 @@
1
1
  """Service layer modules for lucius-mcp."""
2
+
3
+ from .attachment_service import AttachmentService
4
+ from .search_service import SearchService
5
+ from .shared_step_service import SharedStepService
6
+ from .test_case_service import TestCaseService
7
+ from .test_layer_service import TestLayerService
8
+
9
+ __all__ = ["AttachmentService", "SearchService", "SharedStepService", "TestCaseService", "TestLayerService"]