cosmotech-api 3.2.6.dev0__py3-none-any.whl → 3.3.4__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.

Potentially problematic release.


This version of cosmotech-api might be problematic. Click here for more details.

Files changed (259) hide show
  1. cosmotech_api/__init__.py +49 -3
  2. cosmotech_api/api/__init__.py +3 -0
  3. cosmotech_api/api/connector_api.py +285 -26
  4. cosmotech_api/api/dataset_api.py +264 -233
  5. cosmotech_api/api/meta_api.py +281 -0
  6. cosmotech_api/api/organization_api.py +968 -89
  7. cosmotech_api/api/run_api.py +55 -47
  8. cosmotech_api/api/runner_api.py +109 -96
  9. cosmotech_api/api/scenario_api.py +6558 -3259
  10. cosmotech_api/api/scenariorun_api.py +4044 -1987
  11. cosmotech_api/api/scenariorunresult_api.py +1 -1
  12. cosmotech_api/api/solution_api.py +1143 -473
  13. cosmotech_api/api/twingraph_api.py +4152 -2084
  14. cosmotech_api/api/validator_api.py +1 -1
  15. cosmotech_api/api/workspace_api.py +428 -114
  16. cosmotech_api/api_client.py +59 -29
  17. cosmotech_api/configuration.py +29 -7
  18. cosmotech_api/exceptions.py +1 -1
  19. cosmotech_api/model/component_role_permissions.py +1 -1
  20. cosmotech_api/model/connector.py +1 -1
  21. cosmotech_api/model/connector_parameter.py +1 -1
  22. cosmotech_api/model/connector_parameter_group.py +1 -1
  23. cosmotech_api/model/container_resource_size_info.py +1 -1
  24. cosmotech_api/model/container_resource_sizing.py +1 -1
  25. cosmotech_api/model/dataset.py +1 -1
  26. cosmotech_api/model/dataset_access_control.py +1 -1
  27. cosmotech_api/model/dataset_compatibility.py +1 -1
  28. cosmotech_api/model/dataset_connector.py +1 -1
  29. cosmotech_api/model/dataset_copy_parameters.py +1 -1
  30. cosmotech_api/model/dataset_role.py +1 -1
  31. cosmotech_api/model/dataset_search.py +1 -1
  32. cosmotech_api/model/dataset_security.py +1 -1
  33. cosmotech_api/model/dataset_source_type.py +1 -1
  34. cosmotech_api/model/dataset_twin_graph_hash.py +1 -1
  35. cosmotech_api/model/dataset_twin_graph_info.py +1 -1
  36. cosmotech_api/model/dataset_twin_graph_query.py +1 -1
  37. cosmotech_api/model/delete_historical_data.py +1 -1
  38. cosmotech_api/model/file_upload_metadata.py +1 -1
  39. cosmotech_api/model/file_upload_validation.py +1 -1
  40. cosmotech_api/model/graph_properties.py +1 -1
  41. cosmotech_api/model/organization.py +1 -1
  42. cosmotech_api/model/organization_access_control.py +1 -1
  43. cosmotech_api/model/organization_role.py +1 -1
  44. cosmotech_api/model/organization_security.py +1 -1
  45. cosmotech_api/model/organization_service.py +1 -1
  46. cosmotech_api/model/organization_services.py +1 -1
  47. cosmotech_api/model/resource_size_info.py +1 -1
  48. cosmotech_api/model/run.py +1 -1
  49. cosmotech_api/model/run_container.py +1 -1
  50. cosmotech_api/model/run_container_artifact.py +1 -1
  51. cosmotech_api/model/run_container_logs.py +1 -1
  52. cosmotech_api/model/run_logs.py +1 -1
  53. cosmotech_api/model/run_resource_requested.py +1 -1
  54. cosmotech_api/model/run_search.py +1 -1
  55. cosmotech_api/model/run_start_containers.py +1 -1
  56. cosmotech_api/model/run_state.py +1 -1
  57. cosmotech_api/model/run_status.py +1 -1
  58. cosmotech_api/model/run_status_node.py +1 -1
  59. cosmotech_api/model/run_template.py +1 -1
  60. cosmotech_api/model/run_template_handler_id.py +1 -1
  61. cosmotech_api/model/run_template_orchestrator.py +1 -1
  62. cosmotech_api/model/run_template_parameter.py +1 -1
  63. cosmotech_api/model/run_template_parameter_group.py +1 -1
  64. cosmotech_api/model/run_template_parameter_value.py +1 -1
  65. cosmotech_api/model/run_template_resource_sizing.py +1 -1
  66. cosmotech_api/model/run_template_step_source.py +1 -1
  67. cosmotech_api/model/runner.py +1 -1
  68. cosmotech_api/model/runner_access_control.py +1 -1
  69. cosmotech_api/model/runner_changed_parameter_value.py +1 -1
  70. cosmotech_api/model/runner_comparison_result.py +1 -1
  71. cosmotech_api/model/runner_data_download_info.py +1 -1
  72. cosmotech_api/model/runner_data_download_job.py +1 -1
  73. cosmotech_api/model/runner_job_state.py +1 -1
  74. cosmotech_api/model/runner_last_run.py +1 -1
  75. cosmotech_api/model/runner_resource_sizing.py +1 -1
  76. cosmotech_api/model/runner_role.py +1 -1
  77. cosmotech_api/model/runner_run_template_parameter_value.py +1 -1
  78. cosmotech_api/model/runner_security.py +1 -1
  79. cosmotech_api/model/runner_validation_status.py +1 -1
  80. cosmotech_api/model/scenario.py +1 -1
  81. cosmotech_api/model/scenario_access_control.py +1 -1
  82. cosmotech_api/model/scenario_changed_parameter_value.py +1 -1
  83. cosmotech_api/model/scenario_comparison_result.py +1 -1
  84. cosmotech_api/model/scenario_data_download_info.py +1 -1
  85. cosmotech_api/model/scenario_data_download_job.py +1 -1
  86. cosmotech_api/model/scenario_job_state.py +1 -1
  87. cosmotech_api/model/scenario_last_run.py +1 -1
  88. cosmotech_api/model/scenario_resource_sizing.py +1 -1
  89. cosmotech_api/model/scenario_role.py +1 -1
  90. cosmotech_api/model/scenario_run.py +1 -1
  91. cosmotech_api/model/scenario_run_container.py +1 -1
  92. cosmotech_api/model/scenario_run_container_artifact.py +1 -1
  93. cosmotech_api/model/scenario_run_container_logs.py +1 -1
  94. cosmotech_api/model/scenario_run_logs.py +1 -1
  95. cosmotech_api/model/scenario_run_resource_requested.py +1 -1
  96. cosmotech_api/model/scenario_run_result.py +1 -1
  97. cosmotech_api/model/scenario_run_search.py +1 -1
  98. cosmotech_api/model/scenario_run_start_containers.py +1 -1
  99. cosmotech_api/model/scenario_run_state.py +1 -1
  100. cosmotech_api/model/scenario_run_status.py +1 -1
  101. cosmotech_api/model/scenario_run_status_node.py +1 -1
  102. cosmotech_api/model/scenario_run_template_parameter_value.py +1 -1
  103. cosmotech_api/model/scenario_security.py +1 -1
  104. cosmotech_api/model/scenario_validation_status.py +1 -1
  105. cosmotech_api/model/solution.py +1 -1
  106. cosmotech_api/model/solution_access_control.py +1 -1
  107. cosmotech_api/model/solution_role.py +1 -1
  108. cosmotech_api/model/solution_security.py +1 -1
  109. cosmotech_api/model/source_info.py +1 -1
  110. cosmotech_api/model/sub_dataset_graph_query.py +1 -1
  111. cosmotech_api/model/translated_labels.py +1 -1
  112. cosmotech_api/model/twin_graph_batch_result.py +1 -1
  113. cosmotech_api/model/twin_graph_hash.py +1 -1
  114. cosmotech_api/model/twin_graph_query.py +1 -1
  115. cosmotech_api/model/validator.py +1 -1
  116. cosmotech_api/model/validator_run.py +1 -1
  117. cosmotech_api/model/workspace.py +1 -1
  118. cosmotech_api/model/workspace_access_control.py +1 -1
  119. cosmotech_api/model/workspace_file.py +1 -1
  120. cosmotech_api/model/workspace_role.py +1 -1
  121. cosmotech_api/model/workspace_secret.py +1 -1
  122. cosmotech_api/model/workspace_security.py +1 -1
  123. cosmotech_api/model/workspace_solution.py +1 -1
  124. cosmotech_api/model/workspace_web_app.py +1 -1
  125. cosmotech_api/model_utils.py +1 -1
  126. cosmotech_api/models/__init__.py +46 -3
  127. cosmotech_api/models/about_info.py +92 -0
  128. cosmotech_api/models/about_info_version.py +100 -0
  129. cosmotech_api/models/component_role_permissions.py +7 -7
  130. cosmotech_api/models/connector.py +15 -11
  131. cosmotech_api/models/connector_parameter.py +7 -7
  132. cosmotech_api/models/connector_parameter_group.py +10 -10
  133. cosmotech_api/models/container_resource_size_info.py +7 -7
  134. cosmotech_api/models/container_resource_sizing.py +7 -7
  135. cosmotech_api/models/created_run.py +7 -7
  136. cosmotech_api/models/dataset.py +10 -10
  137. cosmotech_api/models/dataset_access_control.py +7 -7
  138. cosmotech_api/models/dataset_compatibility.py +7 -7
  139. cosmotech_api/models/dataset_connector.py +7 -7
  140. cosmotech_api/models/dataset_copy_parameters.py +7 -7
  141. cosmotech_api/models/dataset_role.py +7 -7
  142. cosmotech_api/models/dataset_search.py +7 -7
  143. cosmotech_api/models/dataset_security.py +10 -10
  144. cosmotech_api/models/dataset_source_type.py +1 -1
  145. cosmotech_api/models/dataset_twin_graph_hash.py +7 -7
  146. cosmotech_api/models/dataset_twin_graph_info.py +7 -7
  147. cosmotech_api/models/dataset_twin_graph_query.py +7 -7
  148. cosmotech_api/models/delete_historical_data.py +7 -7
  149. cosmotech_api/models/file_upload_metadata.py +7 -7
  150. cosmotech_api/models/file_upload_validation.py +13 -13
  151. cosmotech_api/models/graph_properties.py +7 -7
  152. cosmotech_api/models/ingestion_status_enum.py +1 -1
  153. cosmotech_api/models/io_types_enum.py +1 -1
  154. cosmotech_api/models/organization.py +14 -8
  155. cosmotech_api/models/organization_access_control.py +7 -7
  156. cosmotech_api/models/organization_create_request.py +95 -0
  157. cosmotech_api/models/organization_role.py +7 -7
  158. cosmotech_api/models/organization_security.py +10 -10
  159. cosmotech_api/models/organization_service.py +7 -7
  160. cosmotech_api/models/organization_services.py +7 -7
  161. cosmotech_api/models/organization_update_request.py +89 -0
  162. cosmotech_api/models/query_result.py +7 -7
  163. cosmotech_api/models/resource_size_info.py +7 -7
  164. cosmotech_api/models/run.py +13 -13
  165. cosmotech_api/models/run_container.py +19 -9
  166. cosmotech_api/models/run_container_artifact.py +7 -7
  167. cosmotech_api/models/run_container_logs.py +7 -7
  168. cosmotech_api/models/run_data.py +7 -7
  169. cosmotech_api/models/run_data_query.py +7 -7
  170. cosmotech_api/models/run_logs.py +27 -22
  171. cosmotech_api/models/run_logs_entry.py +7 -7
  172. cosmotech_api/models/run_resource_requested.py +7 -7
  173. cosmotech_api/models/run_search.py +7 -7
  174. cosmotech_api/models/run_search_state.py +1 -1
  175. cosmotech_api/models/run_start_containers.py +10 -10
  176. cosmotech_api/models/run_state.py +1 -1
  177. cosmotech_api/models/run_status.py +10 -10
  178. cosmotech_api/models/run_status_node.py +7 -7
  179. cosmotech_api/models/run_template.py +7 -7
  180. cosmotech_api/models/run_template_handler_id.py +1 -1
  181. cosmotech_api/models/run_template_orchestrator.py +1 -1
  182. cosmotech_api/models/run_template_parameter.py +7 -7
  183. cosmotech_api/models/run_template_parameter_group.py +7 -7
  184. cosmotech_api/models/run_template_parameter_value.py +7 -7
  185. cosmotech_api/models/run_template_resource_sizing.py +7 -7
  186. cosmotech_api/models/run_template_step_source.py +1 -1
  187. cosmotech_api/models/runner.py +33 -14
  188. cosmotech_api/models/runner_access_control.py +7 -7
  189. cosmotech_api/models/runner_changed_parameter_value.py +7 -7
  190. cosmotech_api/models/runner_comparison_result.py +10 -10
  191. cosmotech_api/models/runner_create_request.py +154 -0
  192. cosmotech_api/models/runner_data_download_info.py +12 -9
  193. cosmotech_api/models/runner_data_download_job.py +7 -7
  194. cosmotech_api/models/runner_job_state.py +1 -1
  195. cosmotech_api/models/runner_last_run.py +7 -7
  196. cosmotech_api/models/runner_parent_last_run.py +7 -7
  197. cosmotech_api/models/runner_resource_sizing.py +7 -7
  198. cosmotech_api/models/runner_role.py +7 -7
  199. cosmotech_api/models/runner_root_last_run.py +7 -7
  200. cosmotech_api/models/runner_run_template_parameter_value.py +7 -7
  201. cosmotech_api/models/runner_security.py +10 -10
  202. cosmotech_api/models/runner_update_request.py +123 -0
  203. cosmotech_api/models/runner_validation_status.py +1 -1
  204. cosmotech_api/models/scenario.py +11 -11
  205. cosmotech_api/models/scenario_access_control.py +7 -7
  206. cosmotech_api/models/scenario_changed_parameter_value.py +7 -7
  207. cosmotech_api/models/scenario_comparison_result.py +10 -10
  208. cosmotech_api/models/scenario_data_download_info.py +7 -7
  209. cosmotech_api/models/scenario_data_download_job.py +7 -7
  210. cosmotech_api/models/scenario_job_state.py +1 -1
  211. cosmotech_api/models/scenario_last_run.py +7 -7
  212. cosmotech_api/models/scenario_resource_sizing.py +7 -7
  213. cosmotech_api/models/scenario_role.py +7 -7
  214. cosmotech_api/models/scenario_run.py +13 -13
  215. cosmotech_api/models/scenario_run_container.py +10 -10
  216. cosmotech_api/models/scenario_run_container_artifact.py +7 -7
  217. cosmotech_api/models/scenario_run_container_logs.py +7 -7
  218. cosmotech_api/models/scenario_run_logs.py +10 -10
  219. cosmotech_api/models/scenario_run_resource_requested.py +7 -7
  220. cosmotech_api/models/scenario_run_search.py +7 -7
  221. cosmotech_api/models/scenario_run_search_state.py +1 -1
  222. cosmotech_api/models/scenario_run_start_containers.py +10 -10
  223. cosmotech_api/models/scenario_run_state.py +1 -1
  224. cosmotech_api/models/scenario_run_status.py +10 -10
  225. cosmotech_api/models/scenario_run_status_node.py +7 -7
  226. cosmotech_api/models/scenario_run_template_parameter_value.py +7 -7
  227. cosmotech_api/models/scenario_security.py +10 -10
  228. cosmotech_api/models/scenario_validation_status.py +1 -1
  229. cosmotech_api/models/send_run_data_request.py +7 -7
  230. cosmotech_api/models/solution.py +17 -17
  231. cosmotech_api/models/solution_access_control.py +7 -7
  232. cosmotech_api/models/solution_create_request.py +143 -0
  233. cosmotech_api/models/solution_role.py +7 -7
  234. cosmotech_api/models/solution_security.py +10 -10
  235. cosmotech_api/models/solution_update_request.py +107 -0
  236. cosmotech_api/models/source_info.py +7 -7
  237. cosmotech_api/models/sub_dataset_graph_query.py +7 -7
  238. cosmotech_api/models/twin_graph_batch_result.py +7 -7
  239. cosmotech_api/models/twin_graph_hash.py +7 -7
  240. cosmotech_api/models/twin_graph_query.py +7 -7
  241. cosmotech_api/models/twincache_status_enum.py +1 -1
  242. cosmotech_api/models/validator.py +7 -7
  243. cosmotech_api/models/workspace.py +8 -8
  244. cosmotech_api/models/workspace_access_control.py +7 -7
  245. cosmotech_api/models/workspace_create_request.py +117 -0
  246. cosmotech_api/models/workspace_file.py +7 -7
  247. cosmotech_api/models/workspace_role.py +7 -7
  248. cosmotech_api/models/workspace_secret.py +11 -13
  249. cosmotech_api/models/workspace_security.py +10 -10
  250. cosmotech_api/models/workspace_solution.py +7 -7
  251. cosmotech_api/models/workspace_update_request.py +109 -0
  252. cosmotech_api/models/workspace_web_app.py +7 -7
  253. cosmotech_api/rest.py +3 -1
  254. {cosmotech_api-3.2.6.dev0.dist-info → cosmotech_api-3.3.4.dist-info}/METADATA +13 -5
  255. cosmotech_api-3.3.4.dist-info/RECORD +273 -0
  256. {cosmotech_api-3.2.6.dev0.dist-info → cosmotech_api-3.3.4.dist-info}/WHEEL +1 -1
  257. cosmotech_api-3.2.6.dev0.dist-info/RECORD +0 -262
  258. {cosmotech_api-3.2.6.dev0.dist-info → cosmotech_api-3.3.4.dist-info}/LICENSE +0 -0
  259. {cosmotech_api-3.2.6.dev0.dist-info → cosmotech_api-3.3.4.dist-info}/top_level.txt +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Cosmo Tech Platform API
7
7
 
8
- The version of the OpenAPI document: 4.0.0-onprem.7
8
+ The version of the OpenAPI document: 3.3.4
9
9
  Contact: platform@cosmotech.com
10
10
  Generated by OpenAPI Generator (https://openapi-generator.tech)
11
11
 
@@ -18,13 +18,14 @@ from typing import Any, Dict, List, Optional, Tuple, Union
18
18
  from typing_extensions import Annotated
19
19
 
20
20
  from pydantic import Field, StrictInt, StrictStr
21
- from typing import Optional
21
+ from typing import Any, Dict, List, Optional
22
22
  from typing_extensions import Annotated
23
23
  from cosmotech_api.models.component_role_permissions import ComponentRolePermissions
24
24
  from cosmotech_api.models.organization import Organization
25
25
  from cosmotech_api.models.organization_access_control import OrganizationAccessControl
26
26
  from cosmotech_api.models.organization_role import OrganizationRole
27
27
  from cosmotech_api.models.organization_security import OrganizationSecurity
28
+ from cosmotech_api.models.organization_service import OrganizationService
28
29
 
29
30
  from cosmotech_api.api_client import ApiClient, RequestSerialized
30
31
  from cosmotech_api.api_response import ApiResponse
@@ -272,7 +273,7 @@ class OrganizationApi:
272
273
  _query_params: List[Tuple[str, str]] = []
273
274
  _header_params: Dict[str, Optional[str]] = _headers or {}
274
275
  _form_params: List[Tuple[str, str]] = []
275
- _files: Dict[str, str] = {}
276
+ _files: Dict[str, Union[str, bytes]] = {}
276
277
  _body_params: Optional[bytes] = None
277
278
 
278
279
  # process the path parameters
@@ -287,11 +288,12 @@ class OrganizationApi:
287
288
 
288
289
 
289
290
  # set the HTTP header `Accept`
290
- _header_params['Accept'] = self.api_client.select_header_accept(
291
- [
292
- 'application/json'
293
- ]
294
- )
291
+ if 'Accept' not in _header_params:
292
+ _header_params['Accept'] = self.api_client.select_header_accept(
293
+ [
294
+ 'application/json'
295
+ ]
296
+ )
295
297
 
296
298
  # set the HTTP header `Content-Type`
297
299
  if _content_type:
@@ -334,7 +336,7 @@ class OrganizationApi:
334
336
  @validate_call
335
337
  def find_all_organizations(
336
338
  self,
337
- page: Annotated[Optional[StrictInt], Field(description="page number to query (first page is at index 0)")] = None,
339
+ page: Annotated[Optional[StrictInt], Field(description="page number to query")] = None,
338
340
  size: Annotated[Optional[StrictInt], Field(description="amount of result by page")] = None,
339
341
  _request_timeout: Union[
340
342
  None,
@@ -352,7 +354,7 @@ class OrganizationApi:
352
354
  """List all Organizations
353
355
 
354
356
 
355
- :param page: page number to query (first page is at index 0)
357
+ :param page: page number to query
356
358
  :type page: int
357
359
  :param size: amount of result by page
358
360
  :type size: int
@@ -404,7 +406,7 @@ class OrganizationApi:
404
406
  @validate_call
405
407
  def find_all_organizations_with_http_info(
406
408
  self,
407
- page: Annotated[Optional[StrictInt], Field(description="page number to query (first page is at index 0)")] = None,
409
+ page: Annotated[Optional[StrictInt], Field(description="page number to query")] = None,
408
410
  size: Annotated[Optional[StrictInt], Field(description="amount of result by page")] = None,
409
411
  _request_timeout: Union[
410
412
  None,
@@ -422,7 +424,7 @@ class OrganizationApi:
422
424
  """List all Organizations
423
425
 
424
426
 
425
- :param page: page number to query (first page is at index 0)
427
+ :param page: page number to query
426
428
  :type page: int
427
429
  :param size: amount of result by page
428
430
  :type size: int
@@ -474,7 +476,7 @@ class OrganizationApi:
474
476
  @validate_call
475
477
  def find_all_organizations_without_preload_content(
476
478
  self,
477
- page: Annotated[Optional[StrictInt], Field(description="page number to query (first page is at index 0)")] = None,
479
+ page: Annotated[Optional[StrictInt], Field(description="page number to query")] = None,
478
480
  size: Annotated[Optional[StrictInt], Field(description="amount of result by page")] = None,
479
481
  _request_timeout: Union[
480
482
  None,
@@ -492,7 +494,7 @@ class OrganizationApi:
492
494
  """List all Organizations
493
495
 
494
496
 
495
- :param page: page number to query (first page is at index 0)
497
+ :param page: page number to query
496
498
  :type page: int
497
499
  :param size: amount of result by page
498
500
  :type size: int
@@ -556,7 +558,7 @@ class OrganizationApi:
556
558
  _query_params: List[Tuple[str, str]] = []
557
559
  _header_params: Dict[str, Optional[str]] = _headers or {}
558
560
  _form_params: List[Tuple[str, str]] = []
559
- _files: Dict[str, str] = {}
561
+ _files: Dict[str, Union[str, bytes]] = {}
560
562
  _body_params: Optional[bytes] = None
561
563
 
562
564
  # process the path parameters
@@ -575,11 +577,12 @@ class OrganizationApi:
575
577
 
576
578
 
577
579
  # set the HTTP header `Accept`
578
- _header_params['Accept'] = self.api_client.select_header_accept(
579
- [
580
- 'application/json'
581
- ]
582
- )
580
+ if 'Accept' not in _header_params:
581
+ _header_params['Accept'] = self.api_client.select_header_accept(
582
+ [
583
+ 'application/json'
584
+ ]
585
+ )
583
586
 
584
587
 
585
588
  # authentication setting
@@ -820,7 +823,7 @@ class OrganizationApi:
820
823
  _query_params: List[Tuple[str, str]] = []
821
824
  _header_params: Dict[str, Optional[str]] = _headers or {}
822
825
  _form_params: List[Tuple[str, str]] = []
823
- _files: Dict[str, str] = {}
826
+ _files: Dict[str, Union[str, bytes]] = {}
824
827
  _body_params: Optional[bytes] = None
825
828
 
826
829
  # process the path parameters
@@ -833,11 +836,12 @@ class OrganizationApi:
833
836
 
834
837
 
835
838
  # set the HTTP header `Accept`
836
- _header_params['Accept'] = self.api_client.select_header_accept(
837
- [
838
- 'application/json'
839
- ]
840
- )
839
+ if 'Accept' not in _header_params:
840
+ _header_params['Accept'] = self.api_client.select_header_accept(
841
+ [
842
+ 'application/json'
843
+ ]
844
+ )
841
845
 
842
846
 
843
847
  # authentication setting
@@ -1062,7 +1066,7 @@ class OrganizationApi:
1062
1066
  _query_params: List[Tuple[str, str]] = []
1063
1067
  _header_params: Dict[str, Optional[str]] = _headers or {}
1064
1068
  _form_params: List[Tuple[str, str]] = []
1065
- _files: Dict[str, str] = {}
1069
+ _files: Dict[str, Union[str, bytes]] = {}
1066
1070
  _body_params: Optional[bytes] = None
1067
1071
 
1068
1072
  # process the path parameters
@@ -1073,11 +1077,12 @@ class OrganizationApi:
1073
1077
 
1074
1078
 
1075
1079
  # set the HTTP header `Accept`
1076
- _header_params['Accept'] = self.api_client.select_header_accept(
1077
- [
1078
- 'application/json'
1079
- ]
1080
- )
1080
+ if 'Accept' not in _header_params:
1081
+ _header_params['Accept'] = self.api_client.select_header_accept(
1082
+ [
1083
+ 'application/json'
1084
+ ]
1085
+ )
1081
1086
 
1082
1087
 
1083
1088
  # authentication setting
@@ -1331,7 +1336,7 @@ class OrganizationApi:
1331
1336
  _query_params: List[Tuple[str, str]] = []
1332
1337
  _header_params: Dict[str, Optional[str]] = _headers or {}
1333
1338
  _form_params: List[Tuple[str, str]] = []
1334
- _files: Dict[str, str] = {}
1339
+ _files: Dict[str, Union[str, bytes]] = {}
1335
1340
  _body_params: Optional[bytes] = None
1336
1341
 
1337
1342
  # process the path parameters
@@ -1346,11 +1351,12 @@ class OrganizationApi:
1346
1351
 
1347
1352
 
1348
1353
  # set the HTTP header `Accept`
1349
- _header_params['Accept'] = self.api_client.select_header_accept(
1350
- [
1351
- 'application/json'
1352
- ]
1353
- )
1354
+ if 'Accept' not in _header_params:
1355
+ _header_params['Accept'] = self.api_client.select_header_accept(
1356
+ [
1357
+ 'application/json'
1358
+ ]
1359
+ )
1354
1360
 
1355
1361
 
1356
1362
  # authentication setting
@@ -1601,7 +1607,7 @@ class OrganizationApi:
1601
1607
  _query_params: List[Tuple[str, str]] = []
1602
1608
  _header_params: Dict[str, Optional[str]] = _headers or {}
1603
1609
  _form_params: List[Tuple[str, str]] = []
1604
- _files: Dict[str, str] = {}
1610
+ _files: Dict[str, Union[str, bytes]] = {}
1605
1611
  _body_params: Optional[bytes] = None
1606
1612
 
1607
1613
  # process the path parameters
@@ -1616,11 +1622,12 @@ class OrganizationApi:
1616
1622
 
1617
1623
 
1618
1624
  # set the HTTP header `Accept`
1619
- _header_params['Accept'] = self.api_client.select_header_accept(
1620
- [
1621
- 'application/json'
1622
- ]
1623
- )
1625
+ if 'Accept' not in _header_params:
1626
+ _header_params['Accept'] = self.api_client.select_header_accept(
1627
+ [
1628
+ 'application/json'
1629
+ ]
1630
+ )
1624
1631
 
1625
1632
 
1626
1633
  # authentication setting
@@ -1861,7 +1868,7 @@ class OrganizationApi:
1861
1868
  _query_params: List[Tuple[str, str]] = []
1862
1869
  _header_params: Dict[str, Optional[str]] = _headers or {}
1863
1870
  _form_params: List[Tuple[str, str]] = []
1864
- _files: Dict[str, str] = {}
1871
+ _files: Dict[str, Union[str, bytes]] = {}
1865
1872
  _body_params: Optional[bytes] = None
1866
1873
 
1867
1874
  # process the path parameters
@@ -1874,11 +1881,12 @@ class OrganizationApi:
1874
1881
 
1875
1882
 
1876
1883
  # set the HTTP header `Accept`
1877
- _header_params['Accept'] = self.api_client.select_header_accept(
1878
- [
1879
- 'application/json'
1880
- ]
1881
- )
1884
+ if 'Accept' not in _header_params:
1885
+ _header_params['Accept'] = self.api_client.select_header_accept(
1886
+ [
1887
+ 'application/json'
1888
+ ]
1889
+ )
1882
1890
 
1883
1891
 
1884
1892
  # authentication setting
@@ -2119,7 +2127,7 @@ class OrganizationApi:
2119
2127
  _query_params: List[Tuple[str, str]] = []
2120
2128
  _header_params: Dict[str, Optional[str]] = _headers or {}
2121
2129
  _form_params: List[Tuple[str, str]] = []
2122
- _files: Dict[str, str] = {}
2130
+ _files: Dict[str, Union[str, bytes]] = {}
2123
2131
  _body_params: Optional[bytes] = None
2124
2132
 
2125
2133
  # process the path parameters
@@ -2132,11 +2140,12 @@ class OrganizationApi:
2132
2140
 
2133
2141
 
2134
2142
  # set the HTTP header `Accept`
2135
- _header_params['Accept'] = self.api_client.select_header_accept(
2136
- [
2137
- 'application/json'
2138
- ]
2139
- )
2143
+ if 'Accept' not in _header_params:
2144
+ _header_params['Accept'] = self.api_client.select_header_accept(
2145
+ [
2146
+ 'application/json'
2147
+ ]
2148
+ )
2140
2149
 
2141
2150
 
2142
2151
  # authentication setting
@@ -2377,7 +2386,7 @@ class OrganizationApi:
2377
2386
  _query_params: List[Tuple[str, str]] = []
2378
2387
  _header_params: Dict[str, Optional[str]] = _headers or {}
2379
2388
  _form_params: List[Tuple[str, str]] = []
2380
- _files: Dict[str, str] = {}
2389
+ _files: Dict[str, Union[str, bytes]] = {}
2381
2390
  _body_params: Optional[bytes] = None
2382
2391
 
2383
2392
  # process the path parameters
@@ -2390,11 +2399,12 @@ class OrganizationApi:
2390
2399
 
2391
2400
 
2392
2401
  # set the HTTP header `Accept`
2393
- _header_params['Accept'] = self.api_client.select_header_accept(
2394
- [
2395
- 'application/json'
2396
- ]
2397
- )
2402
+ if 'Accept' not in _header_params:
2403
+ _header_params['Accept'] = self.api_client.select_header_accept(
2404
+ [
2405
+ 'application/json'
2406
+ ]
2407
+ )
2398
2408
 
2399
2409
  # set the HTTP header `Content-Type`
2400
2410
  if _content_type:
@@ -2662,7 +2672,7 @@ class OrganizationApi:
2662
2672
  _query_params: List[Tuple[str, str]] = []
2663
2673
  _header_params: Dict[str, Optional[str]] = _headers or {}
2664
2674
  _form_params: List[Tuple[str, str]] = []
2665
- _files: Dict[str, str] = {}
2675
+ _files: Dict[str, Union[str, bytes]] = {}
2666
2676
  _body_params: Optional[bytes] = None
2667
2677
 
2668
2678
  # process the path parameters
@@ -2929,7 +2939,7 @@ class OrganizationApi:
2929
2939
  _query_params: List[Tuple[str, str]] = []
2930
2940
  _header_params: Dict[str, Optional[str]] = _headers or {}
2931
2941
  _form_params: List[Tuple[str, str]] = []
2932
- _files: Dict[str, str] = {}
2942
+ _files: Dict[str, Union[str, bytes]] = {}
2933
2943
  _body_params: Optional[bytes] = None
2934
2944
 
2935
2945
  # process the path parameters
@@ -2944,11 +2954,12 @@ class OrganizationApi:
2944
2954
 
2945
2955
 
2946
2956
  # set the HTTP header `Accept`
2947
- _header_params['Accept'] = self.api_client.select_header_accept(
2948
- [
2949
- 'application/json'
2950
- ]
2951
- )
2957
+ if 'Accept' not in _header_params:
2958
+ _header_params['Accept'] = self.api_client.select_header_accept(
2959
+ [
2960
+ 'application/json'
2961
+ ]
2962
+ )
2952
2963
 
2953
2964
  # set the HTTP header `Content-Type`
2954
2965
  if _content_type:
@@ -3203,7 +3214,7 @@ class OrganizationApi:
3203
3214
  _query_params: List[Tuple[str, str]] = []
3204
3215
  _header_params: Dict[str, Optional[str]] = _headers or {}
3205
3216
  _form_params: List[Tuple[str, str]] = []
3206
- _files: Dict[str, str] = {}
3217
+ _files: Dict[str, Union[str, bytes]] = {}
3207
3218
  _body_params: Optional[bytes] = None
3208
3219
 
3209
3220
  # process the path parameters
@@ -3244,7 +3255,7 @@ class OrganizationApi:
3244
3255
  def update_organization(
3245
3256
  self,
3246
3257
  organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
3247
- organization: Annotated[Organization, Field(description="the new Organization details. This endpoint can't be used to update security")],
3258
+ organization: Annotated[Organization, Field(description="The new Organization details. This endpoint can't be used to update : - id - ownerId - security ")],
3248
3259
  _request_timeout: Union[
3249
3260
  None,
3250
3261
  Annotated[StrictFloat, Field(gt=0)],
@@ -3263,7 +3274,7 @@ class OrganizationApi:
3263
3274
 
3264
3275
  :param organization_id: the Organization identifier (required)
3265
3276
  :type organization_id: str
3266
- :param organization: the new Organization details. This endpoint can't be used to update security (required)
3277
+ :param organization: The new Organization details. This endpoint can't be used to update : - id - ownerId - security (required)
3267
3278
  :type organization: Organization
3268
3279
  :param _request_timeout: timeout setting for this request. If one
3269
3280
  number provided, it will be total request
@@ -3316,7 +3327,7 @@ class OrganizationApi:
3316
3327
  def update_organization_with_http_info(
3317
3328
  self,
3318
3329
  organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
3319
- organization: Annotated[Organization, Field(description="the new Organization details. This endpoint can't be used to update security")],
3330
+ organization: Annotated[Organization, Field(description="The new Organization details. This endpoint can't be used to update : - id - ownerId - security ")],
3320
3331
  _request_timeout: Union[
3321
3332
  None,
3322
3333
  Annotated[StrictFloat, Field(gt=0)],
@@ -3335,7 +3346,7 @@ class OrganizationApi:
3335
3346
 
3336
3347
  :param organization_id: the Organization identifier (required)
3337
3348
  :type organization_id: str
3338
- :param organization: the new Organization details. This endpoint can't be used to update security (required)
3349
+ :param organization: The new Organization details. This endpoint can't be used to update : - id - ownerId - security (required)
3339
3350
  :type organization: Organization
3340
3351
  :param _request_timeout: timeout setting for this request. If one
3341
3352
  number provided, it will be total request
@@ -3388,7 +3399,7 @@ class OrganizationApi:
3388
3399
  def update_organization_without_preload_content(
3389
3400
  self,
3390
3401
  organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
3391
- organization: Annotated[Organization, Field(description="the new Organization details. This endpoint can't be used to update security")],
3402
+ organization: Annotated[Organization, Field(description="The new Organization details. This endpoint can't be used to update : - id - ownerId - security ")],
3392
3403
  _request_timeout: Union[
3393
3404
  None,
3394
3405
  Annotated[StrictFloat, Field(gt=0)],
@@ -3407,7 +3418,7 @@ class OrganizationApi:
3407
3418
 
3408
3419
  :param organization_id: the Organization identifier (required)
3409
3420
  :type organization_id: str
3410
- :param organization: the new Organization details. This endpoint can't be used to update security (required)
3421
+ :param organization: The new Organization details. This endpoint can't be used to update : - id - ownerId - security (required)
3411
3422
  :type organization: Organization
3412
3423
  :param _request_timeout: timeout setting for this request. If one
3413
3424
  number provided, it will be total request
@@ -3471,7 +3482,7 @@ class OrganizationApi:
3471
3482
  _query_params: List[Tuple[str, str]] = []
3472
3483
  _header_params: Dict[str, Optional[str]] = _headers or {}
3473
3484
  _form_params: List[Tuple[str, str]] = []
3474
- _files: Dict[str, str] = {}
3485
+ _files: Dict[str, Union[str, bytes]] = {}
3475
3486
  _body_params: Optional[bytes] = None
3476
3487
 
3477
3488
  # process the path parameters
@@ -3486,11 +3497,12 @@ class OrganizationApi:
3486
3497
 
3487
3498
 
3488
3499
  # set the HTTP header `Accept`
3489
- _header_params['Accept'] = self.api_client.select_header_accept(
3490
- [
3491
- 'application/json'
3492
- ]
3493
- )
3500
+ if 'Accept' not in _header_params:
3501
+ _header_params['Accept'] = self.api_client.select_header_accept(
3502
+ [
3503
+ 'application/json'
3504
+ ]
3505
+ )
3494
3506
 
3495
3507
  # set the HTTP header `Content-Type`
3496
3508
  if _content_type:
@@ -3771,7 +3783,7 @@ class OrganizationApi:
3771
3783
  _query_params: List[Tuple[str, str]] = []
3772
3784
  _header_params: Dict[str, Optional[str]] = _headers or {}
3773
3785
  _form_params: List[Tuple[str, str]] = []
3774
- _files: Dict[str, str] = {}
3786
+ _files: Dict[str, Union[str, bytes]] = {}
3775
3787
  _body_params: Optional[bytes] = None
3776
3788
 
3777
3789
  # process the path parameters
@@ -3788,11 +3800,12 @@ class OrganizationApi:
3788
3800
 
3789
3801
 
3790
3802
  # set the HTTP header `Accept`
3791
- _header_params['Accept'] = self.api_client.select_header_accept(
3792
- [
3793
- 'application/json'
3794
- ]
3795
- )
3803
+ if 'Accept' not in _header_params:
3804
+ _header_params['Accept'] = self.api_client.select_header_accept(
3805
+ [
3806
+ 'application/json'
3807
+ ]
3808
+ )
3796
3809
 
3797
3810
  # set the HTTP header `Content-Type`
3798
3811
  if _content_type:
@@ -3801,7 +3814,8 @@ class OrganizationApi:
3801
3814
  _default_content_type = (
3802
3815
  self.api_client.select_header_content_type(
3803
3816
  [
3804
- 'application/json'
3817
+ 'application/json',
3818
+ 'application/yaml'
3805
3819
  ]
3806
3820
  )
3807
3821
  )
@@ -3829,3 +3843,868 @@ class OrganizationApi:
3829
3843
  )
3830
3844
 
3831
3845
 
3846
+
3847
+
3848
+ @validate_call
3849
+ def update_solutions_container_registry_by_organization_id(
3850
+ self,
3851
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
3852
+ organization_service: Annotated[OrganizationService, Field(description="the new solutions container registry configuration to use")],
3853
+ _request_timeout: Union[
3854
+ None,
3855
+ Annotated[StrictFloat, Field(gt=0)],
3856
+ Tuple[
3857
+ Annotated[StrictFloat, Field(gt=0)],
3858
+ Annotated[StrictFloat, Field(gt=0)]
3859
+ ]
3860
+ ] = None,
3861
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3862
+ _content_type: Optional[StrictStr] = None,
3863
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3864
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
3865
+ ) -> OrganizationService:
3866
+ """Update the solutions container registry configuration for the Organization specified
3867
+
3868
+
3869
+ :param organization_id: the Organization identifier (required)
3870
+ :type organization_id: str
3871
+ :param organization_service: the new solutions container registry configuration to use (required)
3872
+ :type organization_service: OrganizationService
3873
+ :param _request_timeout: timeout setting for this request. If one
3874
+ number provided, it will be total request
3875
+ timeout. It can also be a pair (tuple) of
3876
+ (connection, read) timeouts.
3877
+ :type _request_timeout: int, tuple(int, int), optional
3878
+ :param _request_auth: set to override the auth_settings for an a single
3879
+ request; this effectively ignores the
3880
+ authentication in the spec for a single request.
3881
+ :type _request_auth: dict, optional
3882
+ :param _content_type: force content-type for the request.
3883
+ :type _content_type: str, Optional
3884
+ :param _headers: set to override the headers for a single
3885
+ request; this effectively ignores the headers
3886
+ in the spec for a single request.
3887
+ :type _headers: dict, optional
3888
+ :param _host_index: set to override the host_index for a single
3889
+ request; this effectively ignores the host_index
3890
+ in the spec for a single request.
3891
+ :type _host_index: int, optional
3892
+ :return: Returns the result object.
3893
+ """ # noqa: E501
3894
+
3895
+ _param = self._update_solutions_container_registry_by_organization_id_serialize(
3896
+ organization_id=organization_id,
3897
+ organization_service=organization_service,
3898
+ _request_auth=_request_auth,
3899
+ _content_type=_content_type,
3900
+ _headers=_headers,
3901
+ _host_index=_host_index
3902
+ )
3903
+
3904
+ _response_types_map: Dict[str, Optional[str]] = {
3905
+ '200': "OrganizationService",
3906
+ '404': None,
3907
+ }
3908
+ response_data = self.api_client.call_api(
3909
+ *_param,
3910
+ _request_timeout=_request_timeout
3911
+ )
3912
+ response_data.read()
3913
+ return self.api_client.response_deserialize(
3914
+ response_data=response_data,
3915
+ response_types_map=_response_types_map,
3916
+ ).data
3917
+
3918
+
3919
+ @validate_call
3920
+ def update_solutions_container_registry_by_organization_id_with_http_info(
3921
+ self,
3922
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
3923
+ organization_service: Annotated[OrganizationService, Field(description="the new solutions container registry configuration to use")],
3924
+ _request_timeout: Union[
3925
+ None,
3926
+ Annotated[StrictFloat, Field(gt=0)],
3927
+ Tuple[
3928
+ Annotated[StrictFloat, Field(gt=0)],
3929
+ Annotated[StrictFloat, Field(gt=0)]
3930
+ ]
3931
+ ] = None,
3932
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3933
+ _content_type: Optional[StrictStr] = None,
3934
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3935
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
3936
+ ) -> ApiResponse[OrganizationService]:
3937
+ """Update the solutions container registry configuration for the Organization specified
3938
+
3939
+
3940
+ :param organization_id: the Organization identifier (required)
3941
+ :type organization_id: str
3942
+ :param organization_service: the new solutions container registry configuration to use (required)
3943
+ :type organization_service: OrganizationService
3944
+ :param _request_timeout: timeout setting for this request. If one
3945
+ number provided, it will be total request
3946
+ timeout. It can also be a pair (tuple) of
3947
+ (connection, read) timeouts.
3948
+ :type _request_timeout: int, tuple(int, int), optional
3949
+ :param _request_auth: set to override the auth_settings for an a single
3950
+ request; this effectively ignores the
3951
+ authentication in the spec for a single request.
3952
+ :type _request_auth: dict, optional
3953
+ :param _content_type: force content-type for the request.
3954
+ :type _content_type: str, Optional
3955
+ :param _headers: set to override the headers for a single
3956
+ request; this effectively ignores the headers
3957
+ in the spec for a single request.
3958
+ :type _headers: dict, optional
3959
+ :param _host_index: set to override the host_index for a single
3960
+ request; this effectively ignores the host_index
3961
+ in the spec for a single request.
3962
+ :type _host_index: int, optional
3963
+ :return: Returns the result object.
3964
+ """ # noqa: E501
3965
+
3966
+ _param = self._update_solutions_container_registry_by_organization_id_serialize(
3967
+ organization_id=organization_id,
3968
+ organization_service=organization_service,
3969
+ _request_auth=_request_auth,
3970
+ _content_type=_content_type,
3971
+ _headers=_headers,
3972
+ _host_index=_host_index
3973
+ )
3974
+
3975
+ _response_types_map: Dict[str, Optional[str]] = {
3976
+ '200': "OrganizationService",
3977
+ '404': None,
3978
+ }
3979
+ response_data = self.api_client.call_api(
3980
+ *_param,
3981
+ _request_timeout=_request_timeout
3982
+ )
3983
+ response_data.read()
3984
+ return self.api_client.response_deserialize(
3985
+ response_data=response_data,
3986
+ response_types_map=_response_types_map,
3987
+ )
3988
+
3989
+
3990
+ @validate_call
3991
+ def update_solutions_container_registry_by_organization_id_without_preload_content(
3992
+ self,
3993
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
3994
+ organization_service: Annotated[OrganizationService, Field(description="the new solutions container registry configuration to use")],
3995
+ _request_timeout: Union[
3996
+ None,
3997
+ Annotated[StrictFloat, Field(gt=0)],
3998
+ Tuple[
3999
+ Annotated[StrictFloat, Field(gt=0)],
4000
+ Annotated[StrictFloat, Field(gt=0)]
4001
+ ]
4002
+ ] = None,
4003
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4004
+ _content_type: Optional[StrictStr] = None,
4005
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4006
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4007
+ ) -> RESTResponseType:
4008
+ """Update the solutions container registry configuration for the Organization specified
4009
+
4010
+
4011
+ :param organization_id: the Organization identifier (required)
4012
+ :type organization_id: str
4013
+ :param organization_service: the new solutions container registry configuration to use (required)
4014
+ :type organization_service: OrganizationService
4015
+ :param _request_timeout: timeout setting for this request. If one
4016
+ number provided, it will be total request
4017
+ timeout. It can also be a pair (tuple) of
4018
+ (connection, read) timeouts.
4019
+ :type _request_timeout: int, tuple(int, int), optional
4020
+ :param _request_auth: set to override the auth_settings for an a single
4021
+ request; this effectively ignores the
4022
+ authentication in the spec for a single request.
4023
+ :type _request_auth: dict, optional
4024
+ :param _content_type: force content-type for the request.
4025
+ :type _content_type: str, Optional
4026
+ :param _headers: set to override the headers for a single
4027
+ request; this effectively ignores the headers
4028
+ in the spec for a single request.
4029
+ :type _headers: dict, optional
4030
+ :param _host_index: set to override the host_index for a single
4031
+ request; this effectively ignores the host_index
4032
+ in the spec for a single request.
4033
+ :type _host_index: int, optional
4034
+ :return: Returns the result object.
4035
+ """ # noqa: E501
4036
+
4037
+ _param = self._update_solutions_container_registry_by_organization_id_serialize(
4038
+ organization_id=organization_id,
4039
+ organization_service=organization_service,
4040
+ _request_auth=_request_auth,
4041
+ _content_type=_content_type,
4042
+ _headers=_headers,
4043
+ _host_index=_host_index
4044
+ )
4045
+
4046
+ _response_types_map: Dict[str, Optional[str]] = {
4047
+ '200': "OrganizationService",
4048
+ '404': None,
4049
+ }
4050
+ response_data = self.api_client.call_api(
4051
+ *_param,
4052
+ _request_timeout=_request_timeout
4053
+ )
4054
+ return response_data.response
4055
+
4056
+
4057
+ def _update_solutions_container_registry_by_organization_id_serialize(
4058
+ self,
4059
+ organization_id,
4060
+ organization_service,
4061
+ _request_auth,
4062
+ _content_type,
4063
+ _headers,
4064
+ _host_index,
4065
+ ) -> RequestSerialized:
4066
+
4067
+ _host = None
4068
+
4069
+ _collection_formats: Dict[str, str] = {
4070
+ }
4071
+
4072
+ _path_params: Dict[str, str] = {}
4073
+ _query_params: List[Tuple[str, str]] = []
4074
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4075
+ _form_params: List[Tuple[str, str]] = []
4076
+ _files: Dict[str, Union[str, bytes]] = {}
4077
+ _body_params: Optional[bytes] = None
4078
+
4079
+ # process the path parameters
4080
+ if organization_id is not None:
4081
+ _path_params['organization_id'] = organization_id
4082
+ # process the query parameters
4083
+ # process the header parameters
4084
+ # process the form parameters
4085
+ # process the body parameter
4086
+ if organization_service is not None:
4087
+ _body_params = organization_service
4088
+
4089
+
4090
+ # set the HTTP header `Accept`
4091
+ if 'Accept' not in _header_params:
4092
+ _header_params['Accept'] = self.api_client.select_header_accept(
4093
+ [
4094
+ 'application/json'
4095
+ ]
4096
+ )
4097
+
4098
+ # set the HTTP header `Content-Type`
4099
+ if _content_type:
4100
+ _header_params['Content-Type'] = _content_type
4101
+ else:
4102
+ _default_content_type = (
4103
+ self.api_client.select_header_content_type(
4104
+ [
4105
+ 'application/json',
4106
+ 'application/yaml'
4107
+ ]
4108
+ )
4109
+ )
4110
+ if _default_content_type is not None:
4111
+ _header_params['Content-Type'] = _default_content_type
4112
+
4113
+ # authentication setting
4114
+ _auth_settings: List[str] = [
4115
+ 'oAuth2AuthCode'
4116
+ ]
4117
+
4118
+ return self.api_client.param_serialize(
4119
+ method='PATCH',
4120
+ resource_path='/organizations/{organization_id}/services/solutionsContainerRegistry',
4121
+ path_params=_path_params,
4122
+ query_params=_query_params,
4123
+ header_params=_header_params,
4124
+ body=_body_params,
4125
+ post_params=_form_params,
4126
+ files=_files,
4127
+ auth_settings=_auth_settings,
4128
+ collection_formats=_collection_formats,
4129
+ _host=_host,
4130
+ _request_auth=_request_auth
4131
+ )
4132
+
4133
+
4134
+
4135
+
4136
+ @validate_call
4137
+ def update_storage_by_organization_id(
4138
+ self,
4139
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
4140
+ organization_service: Annotated[OrganizationService, Field(description="the new Storage configuration to use")],
4141
+ _request_timeout: Union[
4142
+ None,
4143
+ Annotated[StrictFloat, Field(gt=0)],
4144
+ Tuple[
4145
+ Annotated[StrictFloat, Field(gt=0)],
4146
+ Annotated[StrictFloat, Field(gt=0)]
4147
+ ]
4148
+ ] = None,
4149
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4150
+ _content_type: Optional[StrictStr] = None,
4151
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4152
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4153
+ ) -> OrganizationService:
4154
+ """Update storage configuration for the Organization specified
4155
+
4156
+
4157
+ :param organization_id: the Organization identifier (required)
4158
+ :type organization_id: str
4159
+ :param organization_service: the new Storage configuration to use (required)
4160
+ :type organization_service: OrganizationService
4161
+ :param _request_timeout: timeout setting for this request. If one
4162
+ number provided, it will be total request
4163
+ timeout. It can also be a pair (tuple) of
4164
+ (connection, read) timeouts.
4165
+ :type _request_timeout: int, tuple(int, int), optional
4166
+ :param _request_auth: set to override the auth_settings for an a single
4167
+ request; this effectively ignores the
4168
+ authentication in the spec for a single request.
4169
+ :type _request_auth: dict, optional
4170
+ :param _content_type: force content-type for the request.
4171
+ :type _content_type: str, Optional
4172
+ :param _headers: set to override the headers for a single
4173
+ request; this effectively ignores the headers
4174
+ in the spec for a single request.
4175
+ :type _headers: dict, optional
4176
+ :param _host_index: set to override the host_index for a single
4177
+ request; this effectively ignores the host_index
4178
+ in the spec for a single request.
4179
+ :type _host_index: int, optional
4180
+ :return: Returns the result object.
4181
+ """ # noqa: E501
4182
+
4183
+ _param = self._update_storage_by_organization_id_serialize(
4184
+ organization_id=organization_id,
4185
+ organization_service=organization_service,
4186
+ _request_auth=_request_auth,
4187
+ _content_type=_content_type,
4188
+ _headers=_headers,
4189
+ _host_index=_host_index
4190
+ )
4191
+
4192
+ _response_types_map: Dict[str, Optional[str]] = {
4193
+ '200': "OrganizationService",
4194
+ '404': None,
4195
+ }
4196
+ response_data = self.api_client.call_api(
4197
+ *_param,
4198
+ _request_timeout=_request_timeout
4199
+ )
4200
+ response_data.read()
4201
+ return self.api_client.response_deserialize(
4202
+ response_data=response_data,
4203
+ response_types_map=_response_types_map,
4204
+ ).data
4205
+
4206
+
4207
+ @validate_call
4208
+ def update_storage_by_organization_id_with_http_info(
4209
+ self,
4210
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
4211
+ organization_service: Annotated[OrganizationService, Field(description="the new Storage configuration to use")],
4212
+ _request_timeout: Union[
4213
+ None,
4214
+ Annotated[StrictFloat, Field(gt=0)],
4215
+ Tuple[
4216
+ Annotated[StrictFloat, Field(gt=0)],
4217
+ Annotated[StrictFloat, Field(gt=0)]
4218
+ ]
4219
+ ] = None,
4220
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4221
+ _content_type: Optional[StrictStr] = None,
4222
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4223
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4224
+ ) -> ApiResponse[OrganizationService]:
4225
+ """Update storage configuration for the Organization specified
4226
+
4227
+
4228
+ :param organization_id: the Organization identifier (required)
4229
+ :type organization_id: str
4230
+ :param organization_service: the new Storage configuration to use (required)
4231
+ :type organization_service: OrganizationService
4232
+ :param _request_timeout: timeout setting for this request. If one
4233
+ number provided, it will be total request
4234
+ timeout. It can also be a pair (tuple) of
4235
+ (connection, read) timeouts.
4236
+ :type _request_timeout: int, tuple(int, int), optional
4237
+ :param _request_auth: set to override the auth_settings for an a single
4238
+ request; this effectively ignores the
4239
+ authentication in the spec for a single request.
4240
+ :type _request_auth: dict, optional
4241
+ :param _content_type: force content-type for the request.
4242
+ :type _content_type: str, Optional
4243
+ :param _headers: set to override the headers for a single
4244
+ request; this effectively ignores the headers
4245
+ in the spec for a single request.
4246
+ :type _headers: dict, optional
4247
+ :param _host_index: set to override the host_index for a single
4248
+ request; this effectively ignores the host_index
4249
+ in the spec for a single request.
4250
+ :type _host_index: int, optional
4251
+ :return: Returns the result object.
4252
+ """ # noqa: E501
4253
+
4254
+ _param = self._update_storage_by_organization_id_serialize(
4255
+ organization_id=organization_id,
4256
+ organization_service=organization_service,
4257
+ _request_auth=_request_auth,
4258
+ _content_type=_content_type,
4259
+ _headers=_headers,
4260
+ _host_index=_host_index
4261
+ )
4262
+
4263
+ _response_types_map: Dict[str, Optional[str]] = {
4264
+ '200': "OrganizationService",
4265
+ '404': None,
4266
+ }
4267
+ response_data = self.api_client.call_api(
4268
+ *_param,
4269
+ _request_timeout=_request_timeout
4270
+ )
4271
+ response_data.read()
4272
+ return self.api_client.response_deserialize(
4273
+ response_data=response_data,
4274
+ response_types_map=_response_types_map,
4275
+ )
4276
+
4277
+
4278
+ @validate_call
4279
+ def update_storage_by_organization_id_without_preload_content(
4280
+ self,
4281
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
4282
+ organization_service: Annotated[OrganizationService, Field(description="the new Storage configuration to use")],
4283
+ _request_timeout: Union[
4284
+ None,
4285
+ Annotated[StrictFloat, Field(gt=0)],
4286
+ Tuple[
4287
+ Annotated[StrictFloat, Field(gt=0)],
4288
+ Annotated[StrictFloat, Field(gt=0)]
4289
+ ]
4290
+ ] = None,
4291
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4292
+ _content_type: Optional[StrictStr] = None,
4293
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4294
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4295
+ ) -> RESTResponseType:
4296
+ """Update storage configuration for the Organization specified
4297
+
4298
+
4299
+ :param organization_id: the Organization identifier (required)
4300
+ :type organization_id: str
4301
+ :param organization_service: the new Storage configuration to use (required)
4302
+ :type organization_service: OrganizationService
4303
+ :param _request_timeout: timeout setting for this request. If one
4304
+ number provided, it will be total request
4305
+ timeout. It can also be a pair (tuple) of
4306
+ (connection, read) timeouts.
4307
+ :type _request_timeout: int, tuple(int, int), optional
4308
+ :param _request_auth: set to override the auth_settings for an a single
4309
+ request; this effectively ignores the
4310
+ authentication in the spec for a single request.
4311
+ :type _request_auth: dict, optional
4312
+ :param _content_type: force content-type for the request.
4313
+ :type _content_type: str, Optional
4314
+ :param _headers: set to override the headers for a single
4315
+ request; this effectively ignores the headers
4316
+ in the spec for a single request.
4317
+ :type _headers: dict, optional
4318
+ :param _host_index: set to override the host_index for a single
4319
+ request; this effectively ignores the host_index
4320
+ in the spec for a single request.
4321
+ :type _host_index: int, optional
4322
+ :return: Returns the result object.
4323
+ """ # noqa: E501
4324
+
4325
+ _param = self._update_storage_by_organization_id_serialize(
4326
+ organization_id=organization_id,
4327
+ organization_service=organization_service,
4328
+ _request_auth=_request_auth,
4329
+ _content_type=_content_type,
4330
+ _headers=_headers,
4331
+ _host_index=_host_index
4332
+ )
4333
+
4334
+ _response_types_map: Dict[str, Optional[str]] = {
4335
+ '200': "OrganizationService",
4336
+ '404': None,
4337
+ }
4338
+ response_data = self.api_client.call_api(
4339
+ *_param,
4340
+ _request_timeout=_request_timeout
4341
+ )
4342
+ return response_data.response
4343
+
4344
+
4345
+ def _update_storage_by_organization_id_serialize(
4346
+ self,
4347
+ organization_id,
4348
+ organization_service,
4349
+ _request_auth,
4350
+ _content_type,
4351
+ _headers,
4352
+ _host_index,
4353
+ ) -> RequestSerialized:
4354
+
4355
+ _host = None
4356
+
4357
+ _collection_formats: Dict[str, str] = {
4358
+ }
4359
+
4360
+ _path_params: Dict[str, str] = {}
4361
+ _query_params: List[Tuple[str, str]] = []
4362
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4363
+ _form_params: List[Tuple[str, str]] = []
4364
+ _files: Dict[str, Union[str, bytes]] = {}
4365
+ _body_params: Optional[bytes] = None
4366
+
4367
+ # process the path parameters
4368
+ if organization_id is not None:
4369
+ _path_params['organization_id'] = organization_id
4370
+ # process the query parameters
4371
+ # process the header parameters
4372
+ # process the form parameters
4373
+ # process the body parameter
4374
+ if organization_service is not None:
4375
+ _body_params = organization_service
4376
+
4377
+
4378
+ # set the HTTP header `Accept`
4379
+ if 'Accept' not in _header_params:
4380
+ _header_params['Accept'] = self.api_client.select_header_accept(
4381
+ [
4382
+ 'application/json'
4383
+ ]
4384
+ )
4385
+
4386
+ # set the HTTP header `Content-Type`
4387
+ if _content_type:
4388
+ _header_params['Content-Type'] = _content_type
4389
+ else:
4390
+ _default_content_type = (
4391
+ self.api_client.select_header_content_type(
4392
+ [
4393
+ 'application/json',
4394
+ 'application/yaml'
4395
+ ]
4396
+ )
4397
+ )
4398
+ if _default_content_type is not None:
4399
+ _header_params['Content-Type'] = _default_content_type
4400
+
4401
+ # authentication setting
4402
+ _auth_settings: List[str] = [
4403
+ 'oAuth2AuthCode'
4404
+ ]
4405
+
4406
+ return self.api_client.param_serialize(
4407
+ method='PATCH',
4408
+ resource_path='/organizations/{organization_id}/services/storage',
4409
+ path_params=_path_params,
4410
+ query_params=_query_params,
4411
+ header_params=_header_params,
4412
+ body=_body_params,
4413
+ post_params=_form_params,
4414
+ files=_files,
4415
+ auth_settings=_auth_settings,
4416
+ collection_formats=_collection_formats,
4417
+ _host=_host,
4418
+ _request_auth=_request_auth
4419
+ )
4420
+
4421
+
4422
+
4423
+
4424
+ @validate_call
4425
+ def update_tenant_credentials_by_organization_id(
4426
+ self,
4427
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
4428
+ request_body: Annotated[Dict[str, Any], Field(description="the new Tenant Credentials to use")],
4429
+ _request_timeout: Union[
4430
+ None,
4431
+ Annotated[StrictFloat, Field(gt=0)],
4432
+ Tuple[
4433
+ Annotated[StrictFloat, Field(gt=0)],
4434
+ Annotated[StrictFloat, Field(gt=0)]
4435
+ ]
4436
+ ] = None,
4437
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4438
+ _content_type: Optional[StrictStr] = None,
4439
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4440
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4441
+ ) -> Dict[str, object]:
4442
+ """Update tenant credentials for the Organization specified
4443
+
4444
+
4445
+ :param organization_id: the Organization identifier (required)
4446
+ :type organization_id: str
4447
+ :param request_body: the new Tenant Credentials to use (required)
4448
+ :type request_body: Dict[str, object]
4449
+ :param _request_timeout: timeout setting for this request. If one
4450
+ number provided, it will be total request
4451
+ timeout. It can also be a pair (tuple) of
4452
+ (connection, read) timeouts.
4453
+ :type _request_timeout: int, tuple(int, int), optional
4454
+ :param _request_auth: set to override the auth_settings for an a single
4455
+ request; this effectively ignores the
4456
+ authentication in the spec for a single request.
4457
+ :type _request_auth: dict, optional
4458
+ :param _content_type: force content-type for the request.
4459
+ :type _content_type: str, Optional
4460
+ :param _headers: set to override the headers for a single
4461
+ request; this effectively ignores the headers
4462
+ in the spec for a single request.
4463
+ :type _headers: dict, optional
4464
+ :param _host_index: set to override the host_index for a single
4465
+ request; this effectively ignores the host_index
4466
+ in the spec for a single request.
4467
+ :type _host_index: int, optional
4468
+ :return: Returns the result object.
4469
+ """ # noqa: E501
4470
+
4471
+ _param = self._update_tenant_credentials_by_organization_id_serialize(
4472
+ organization_id=organization_id,
4473
+ request_body=request_body,
4474
+ _request_auth=_request_auth,
4475
+ _content_type=_content_type,
4476
+ _headers=_headers,
4477
+ _host_index=_host_index
4478
+ )
4479
+
4480
+ _response_types_map: Dict[str, Optional[str]] = {
4481
+ '200': "Dict[str, object]",
4482
+ '404': None,
4483
+ }
4484
+ response_data = self.api_client.call_api(
4485
+ *_param,
4486
+ _request_timeout=_request_timeout
4487
+ )
4488
+ response_data.read()
4489
+ return self.api_client.response_deserialize(
4490
+ response_data=response_data,
4491
+ response_types_map=_response_types_map,
4492
+ ).data
4493
+
4494
+
4495
+ @validate_call
4496
+ def update_tenant_credentials_by_organization_id_with_http_info(
4497
+ self,
4498
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
4499
+ request_body: Annotated[Dict[str, Any], Field(description="the new Tenant Credentials to use")],
4500
+ _request_timeout: Union[
4501
+ None,
4502
+ Annotated[StrictFloat, Field(gt=0)],
4503
+ Tuple[
4504
+ Annotated[StrictFloat, Field(gt=0)],
4505
+ Annotated[StrictFloat, Field(gt=0)]
4506
+ ]
4507
+ ] = None,
4508
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4509
+ _content_type: Optional[StrictStr] = None,
4510
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4511
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4512
+ ) -> ApiResponse[Dict[str, object]]:
4513
+ """Update tenant credentials for the Organization specified
4514
+
4515
+
4516
+ :param organization_id: the Organization identifier (required)
4517
+ :type organization_id: str
4518
+ :param request_body: the new Tenant Credentials to use (required)
4519
+ :type request_body: Dict[str, object]
4520
+ :param _request_timeout: timeout setting for this request. If one
4521
+ number provided, it will be total request
4522
+ timeout. It can also be a pair (tuple) of
4523
+ (connection, read) timeouts.
4524
+ :type _request_timeout: int, tuple(int, int), optional
4525
+ :param _request_auth: set to override the auth_settings for an a single
4526
+ request; this effectively ignores the
4527
+ authentication in the spec for a single request.
4528
+ :type _request_auth: dict, optional
4529
+ :param _content_type: force content-type for the request.
4530
+ :type _content_type: str, Optional
4531
+ :param _headers: set to override the headers for a single
4532
+ request; this effectively ignores the headers
4533
+ in the spec for a single request.
4534
+ :type _headers: dict, optional
4535
+ :param _host_index: set to override the host_index for a single
4536
+ request; this effectively ignores the host_index
4537
+ in the spec for a single request.
4538
+ :type _host_index: int, optional
4539
+ :return: Returns the result object.
4540
+ """ # noqa: E501
4541
+
4542
+ _param = self._update_tenant_credentials_by_organization_id_serialize(
4543
+ organization_id=organization_id,
4544
+ request_body=request_body,
4545
+ _request_auth=_request_auth,
4546
+ _content_type=_content_type,
4547
+ _headers=_headers,
4548
+ _host_index=_host_index
4549
+ )
4550
+
4551
+ _response_types_map: Dict[str, Optional[str]] = {
4552
+ '200': "Dict[str, object]",
4553
+ '404': None,
4554
+ }
4555
+ response_data = self.api_client.call_api(
4556
+ *_param,
4557
+ _request_timeout=_request_timeout
4558
+ )
4559
+ response_data.read()
4560
+ return self.api_client.response_deserialize(
4561
+ response_data=response_data,
4562
+ response_types_map=_response_types_map,
4563
+ )
4564
+
4565
+
4566
+ @validate_call
4567
+ def update_tenant_credentials_by_organization_id_without_preload_content(
4568
+ self,
4569
+ organization_id: Annotated[StrictStr, Field(description="the Organization identifier")],
4570
+ request_body: Annotated[Dict[str, Any], Field(description="the new Tenant Credentials to use")],
4571
+ _request_timeout: Union[
4572
+ None,
4573
+ Annotated[StrictFloat, Field(gt=0)],
4574
+ Tuple[
4575
+ Annotated[StrictFloat, Field(gt=0)],
4576
+ Annotated[StrictFloat, Field(gt=0)]
4577
+ ]
4578
+ ] = None,
4579
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4580
+ _content_type: Optional[StrictStr] = None,
4581
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4582
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4583
+ ) -> RESTResponseType:
4584
+ """Update tenant credentials for the Organization specified
4585
+
4586
+
4587
+ :param organization_id: the Organization identifier (required)
4588
+ :type organization_id: str
4589
+ :param request_body: the new Tenant Credentials to use (required)
4590
+ :type request_body: Dict[str, object]
4591
+ :param _request_timeout: timeout setting for this request. If one
4592
+ number provided, it will be total request
4593
+ timeout. It can also be a pair (tuple) of
4594
+ (connection, read) timeouts.
4595
+ :type _request_timeout: int, tuple(int, int), optional
4596
+ :param _request_auth: set to override the auth_settings for an a single
4597
+ request; this effectively ignores the
4598
+ authentication in the spec for a single request.
4599
+ :type _request_auth: dict, optional
4600
+ :param _content_type: force content-type for the request.
4601
+ :type _content_type: str, Optional
4602
+ :param _headers: set to override the headers for a single
4603
+ request; this effectively ignores the headers
4604
+ in the spec for a single request.
4605
+ :type _headers: dict, optional
4606
+ :param _host_index: set to override the host_index for a single
4607
+ request; this effectively ignores the host_index
4608
+ in the spec for a single request.
4609
+ :type _host_index: int, optional
4610
+ :return: Returns the result object.
4611
+ """ # noqa: E501
4612
+
4613
+ _param = self._update_tenant_credentials_by_organization_id_serialize(
4614
+ organization_id=organization_id,
4615
+ request_body=request_body,
4616
+ _request_auth=_request_auth,
4617
+ _content_type=_content_type,
4618
+ _headers=_headers,
4619
+ _host_index=_host_index
4620
+ )
4621
+
4622
+ _response_types_map: Dict[str, Optional[str]] = {
4623
+ '200': "Dict[str, object]",
4624
+ '404': None,
4625
+ }
4626
+ response_data = self.api_client.call_api(
4627
+ *_param,
4628
+ _request_timeout=_request_timeout
4629
+ )
4630
+ return response_data.response
4631
+
4632
+
4633
+ def _update_tenant_credentials_by_organization_id_serialize(
4634
+ self,
4635
+ organization_id,
4636
+ request_body,
4637
+ _request_auth,
4638
+ _content_type,
4639
+ _headers,
4640
+ _host_index,
4641
+ ) -> RequestSerialized:
4642
+
4643
+ _host = None
4644
+
4645
+ _collection_formats: Dict[str, str] = {
4646
+ }
4647
+
4648
+ _path_params: Dict[str, str] = {}
4649
+ _query_params: List[Tuple[str, str]] = []
4650
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4651
+ _form_params: List[Tuple[str, str]] = []
4652
+ _files: Dict[str, Union[str, bytes]] = {}
4653
+ _body_params: Optional[bytes] = None
4654
+
4655
+ # process the path parameters
4656
+ if organization_id is not None:
4657
+ _path_params['organization_id'] = organization_id
4658
+ # process the query parameters
4659
+ # process the header parameters
4660
+ # process the form parameters
4661
+ # process the body parameter
4662
+ if request_body is not None:
4663
+ _body_params = request_body
4664
+
4665
+
4666
+ # set the HTTP header `Accept`
4667
+ if 'Accept' not in _header_params:
4668
+ _header_params['Accept'] = self.api_client.select_header_accept(
4669
+ [
4670
+ 'application/json',
4671
+ 'application/yaml'
4672
+ ]
4673
+ )
4674
+
4675
+ # set the HTTP header `Content-Type`
4676
+ if _content_type:
4677
+ _header_params['Content-Type'] = _content_type
4678
+ else:
4679
+ _default_content_type = (
4680
+ self.api_client.select_header_content_type(
4681
+ [
4682
+ 'application/json',
4683
+ 'application/yaml'
4684
+ ]
4685
+ )
4686
+ )
4687
+ if _default_content_type is not None:
4688
+ _header_params['Content-Type'] = _default_content_type
4689
+
4690
+ # authentication setting
4691
+ _auth_settings: List[str] = [
4692
+ 'oAuth2AuthCode'
4693
+ ]
4694
+
4695
+ return self.api_client.param_serialize(
4696
+ method='PATCH',
4697
+ resource_path='/organizations/{organization_id}/services/tenantCredentials',
4698
+ path_params=_path_params,
4699
+ query_params=_query_params,
4700
+ header_params=_header_params,
4701
+ body=_body_params,
4702
+ post_params=_form_params,
4703
+ files=_files,
4704
+ auth_settings=_auth_settings,
4705
+ collection_formats=_collection_formats,
4706
+ _host=_host,
4707
+ _request_auth=_request_auth
4708
+ )
4709
+
4710
+