windmill-api 1.544.2__py3-none-any.whl → 1.545.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.

Potentially problematic release.


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

Files changed (128) hide show
  1. windmill_api/api/job/cancel_selection.py +20 -1
  2. windmill_api/api/{teams/sync_teams.py → job/get_started_at_by_ids.py} +64 -20
  3. windmill_api/api/workspace/list_available_teams_channels.py +40 -5
  4. windmill_api/api/workspace/list_available_teams_ids.py +21 -1
  5. windmill_api/models/completed_job_flow_status_failure_module.py +22 -0
  6. windmill_api/models/completed_job_flow_status_failure_module_flow_jobs_duration.py +71 -0
  7. windmill_api/models/completed_job_flow_status_modules_item.py +22 -0
  8. windmill_api/models/completed_job_flow_status_modules_item_flow_jobs_duration.py +71 -0
  9. windmill_api/models/completed_job_flow_status_preprocessor_module.py +22 -0
  10. windmill_api/models/completed_job_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  11. windmill_api/models/delete_completed_job_response_200_flow_status_failure_module.py +24 -0
  12. windmill_api/models/delete_completed_job_response_200_flow_status_failure_module_flow_jobs_duration.py +71 -0
  13. windmill_api/models/delete_completed_job_response_200_flow_status_modules_item.py +24 -0
  14. windmill_api/models/delete_completed_job_response_200_flow_status_modules_item_flow_jobs_duration.py +71 -0
  15. windmill_api/models/delete_completed_job_response_200_flow_status_preprocessor_module.py +26 -0
  16. windmill_api/models/delete_completed_job_response_200_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  17. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_failure_module.py +24 -0
  18. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  19. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_modules_item.py +24 -0
  20. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  21. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_preprocessor_module.py +24 -0
  22. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  23. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_failure_module.py +24 -0
  24. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  25. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_modules_item.py +24 -0
  26. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  27. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_preprocessor_module.py +24 -0
  28. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  29. windmill_api/models/flow_status_failure_module.py +18 -0
  30. windmill_api/models/flow_status_failure_module_flow_jobs_duration.py +71 -0
  31. windmill_api/models/flow_status_module.py +18 -0
  32. windmill_api/models/flow_status_module_flow_jobs_duration.py +71 -0
  33. windmill_api/models/flow_status_modules_item.py +18 -0
  34. windmill_api/models/flow_status_modules_item_flow_jobs_duration.py +71 -0
  35. windmill_api/models/flow_status_preprocessor_module.py +20 -0
  36. windmill_api/models/flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  37. windmill_api/models/get_completed_job_response_200_flow_status_failure_module.py +24 -0
  38. windmill_api/models/get_completed_job_response_200_flow_status_failure_module_flow_jobs_duration.py +71 -0
  39. windmill_api/models/get_completed_job_response_200_flow_status_modules_item.py +24 -0
  40. windmill_api/models/get_completed_job_response_200_flow_status_modules_item_flow_jobs_duration.py +71 -0
  41. windmill_api/models/get_completed_job_response_200_flow_status_preprocessor_module.py +24 -0
  42. windmill_api/models/get_completed_job_response_200_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  43. windmill_api/models/get_job_response_200_type_0_flow_status_failure_module.py +24 -0
  44. windmill_api/models/get_job_response_200_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  45. windmill_api/models/get_job_response_200_type_0_flow_status_modules_item.py +24 -0
  46. windmill_api/models/get_job_response_200_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  47. windmill_api/models/get_job_response_200_type_0_flow_status_preprocessor_module.py +24 -0
  48. windmill_api/models/get_job_response_200_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  49. windmill_api/models/get_job_response_200_type_1_flow_status_failure_module.py +24 -0
  50. windmill_api/models/get_job_response_200_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  51. windmill_api/models/get_job_response_200_type_1_flow_status_modules_item.py +24 -0
  52. windmill_api/models/get_job_response_200_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  53. windmill_api/models/get_job_response_200_type_1_flow_status_preprocessor_module.py +24 -0
  54. windmill_api/models/get_job_response_200_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  55. windmill_api/models/get_job_updates_response_200_flow_status_failure_module.py +24 -0
  56. windmill_api/models/get_job_updates_response_200_flow_status_failure_module_flow_jobs_duration.py +71 -0
  57. windmill_api/models/get_job_updates_response_200_flow_status_modules_item.py +24 -0
  58. windmill_api/models/get_job_updates_response_200_flow_status_modules_item_flow_jobs_duration.py +71 -0
  59. windmill_api/models/get_job_updates_response_200_flow_status_preprocessor_module.py +24 -0
  60. windmill_api/models/get_job_updates_response_200_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  61. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module.py +29 -0
  62. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_flow_jobs_duration.py +73 -0
  63. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item.py +26 -0
  64. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_flow_jobs_duration.py +73 -0
  65. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_preprocessor_module.py +31 -0
  66. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  67. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_failure_module.py +29 -0
  68. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_failure_module_flow_jobs_duration.py +73 -0
  69. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_modules_item.py +26 -0
  70. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_modules_item_flow_jobs_duration.py +73 -0
  71. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_preprocessor_module.py +31 -0
  72. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  73. windmill_api/models/job_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  74. windmill_api/models/job_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  75. windmill_api/models/job_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  76. windmill_api/models/job_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  77. windmill_api/models/job_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  78. windmill_api/models/job_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  79. windmill_api/models/list_available_teams_channels_response_200_item.py +0 -16
  80. windmill_api/models/list_completed_jobs_response_200_item_flow_status_failure_module.py +24 -0
  81. windmill_api/models/list_completed_jobs_response_200_item_flow_status_failure_module_flow_jobs_duration.py +71 -0
  82. windmill_api/models/list_completed_jobs_response_200_item_flow_status_modules_item.py +24 -0
  83. windmill_api/models/list_completed_jobs_response_200_item_flow_status_modules_item_flow_jobs_duration.py +71 -0
  84. windmill_api/models/list_completed_jobs_response_200_item_flow_status_preprocessor_module.py +26 -0
  85. windmill_api/models/list_completed_jobs_response_200_item_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  86. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_failure_module.py +31 -0
  87. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_failure_module_flow_jobs_duration.py +73 -0
  88. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_modules_item.py +29 -0
  89. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_modules_item_flow_jobs_duration.py +73 -0
  90. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_preprocessor_module.py +31 -0
  91. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  92. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_failure_module.py +31 -0
  93. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_failure_module_flow_jobs_duration.py +73 -0
  94. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_modules_item.py +29 -0
  95. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_modules_item_flow_jobs_duration.py +73 -0
  96. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_preprocessor_module.py +31 -0
  97. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  98. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_failure_module.py +24 -0
  99. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  100. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_modules_item.py +24 -0
  101. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  102. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_preprocessor_module.py +24 -0
  103. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  104. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_failure_module.py +24 -0
  105. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  106. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_modules_item.py +24 -0
  107. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  108. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_preprocessor_module.py +24 -0
  109. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  110. windmill_api/models/list_queue_response_200_item_flow_status_failure_module.py +24 -0
  111. windmill_api/models/list_queue_response_200_item_flow_status_failure_module_flow_jobs_duration.py +71 -0
  112. windmill_api/models/list_queue_response_200_item_flow_status_modules_item.py +24 -0
  113. windmill_api/models/list_queue_response_200_item_flow_status_modules_item_flow_jobs_duration.py +71 -0
  114. windmill_api/models/list_queue_response_200_item_flow_status_preprocessor_module.py +24 -0
  115. windmill_api/models/list_queue_response_200_item_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  116. windmill_api/models/queued_job_flow_status_failure_module.py +22 -0
  117. windmill_api/models/queued_job_flow_status_failure_module_flow_jobs_duration.py +71 -0
  118. windmill_api/models/queued_job_flow_status_modules_item.py +22 -0
  119. windmill_api/models/queued_job_flow_status_modules_item_flow_jobs_duration.py +71 -0
  120. windmill_api/models/queued_job_flow_status_preprocessor_module.py +22 -0
  121. windmill_api/models/queued_job_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  122. {windmill_api-1.544.2.dist-info → windmill_api-1.545.0.dist-info}/METADATA +1 -1
  123. {windmill_api-1.544.2.dist-info → windmill_api-1.545.0.dist-info}/RECORD +125 -67
  124. windmill_api/models/sync_teams_response_200_item.py +0 -87
  125. windmill_api/models/sync_teams_response_200_item_channels_item.py +0 -80
  126. windmill_api/models/upload_file_part.py +0 -65
  127. {windmill_api-1.544.2.dist-info → windmill_api-1.545.0.dist-info}/LICENSE +0 -0
  128. {windmill_api-1.544.2.dist-info → windmill_api-1.545.0.dist-info}/WHEEL +0 -0
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.list_jobs_response_200_item_type_0_flow_status_modules_item_branchall import (
25
25
  ListJobsResponse200ItemType0FlowStatusModulesItemBranchall,
26
26
  )
27
+ from ..models.list_jobs_response_200_item_type_0_flow_status_modules_item_flow_jobs_duration import (
28
+ ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration,
29
+ )
27
30
  from ..models.list_jobs_response_200_item_type_0_flow_status_modules_item_iterator import (
28
31
  ListJobsResponse200ItemType0FlowStatusModulesItemIterator,
29
32
  )
@@ -44,6 +47,7 @@ class ListJobsResponse200ItemType0FlowStatusModulesItem:
44
47
  iterator (Union[Unset, ListJobsResponse200ItemType0FlowStatusModulesItemIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset, ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration]):
47
51
  branch_chosen (Union[Unset, ListJobsResponse200ItemType0FlowStatusModulesItemBranchChosen]):
48
52
  branchall (Union[Unset, ListJobsResponse200ItemType0FlowStatusModulesItemBranchall]):
49
53
  approvers (Union[Unset, List['ListJobsResponse200ItemType0FlowStatusModulesItemApproversItem']]):
@@ -62,6 +66,7 @@ class ListJobsResponse200ItemType0FlowStatusModulesItem:
62
66
  iterator: Union[Unset, "ListJobsResponse200ItemType0FlowStatusModulesItemIterator"] = UNSET
63
67
  flow_jobs: Union[Unset, List[str]] = UNSET
64
68
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
69
+ flow_jobs_duration: Union[Unset, "ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration"] = UNSET
65
70
  branch_chosen: Union[Unset, "ListJobsResponse200ItemType0FlowStatusModulesItemBranchChosen"] = UNSET
66
71
  branchall: Union[Unset, "ListJobsResponse200ItemType0FlowStatusModulesItemBranchall"] = UNSET
67
72
  approvers: Union[Unset, List["ListJobsResponse200ItemType0FlowStatusModulesItemApproversItem"]] = UNSET
@@ -102,6 +107,10 @@ class ListJobsResponse200ItemType0FlowStatusModulesItem:
102
107
  if not isinstance(self.flow_jobs_success, Unset):
103
108
  flow_jobs_success = self.flow_jobs_success
104
109
 
110
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
111
+ if not isinstance(self.flow_jobs_duration, Unset):
112
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
113
+
105
114
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
106
115
  if not isinstance(self.branch_chosen, Unset):
107
116
  branch_chosen = self.branch_chosen.to_dict()
@@ -164,6 +173,8 @@ class ListJobsResponse200ItemType0FlowStatusModulesItem:
164
173
  field_dict["flow_jobs"] = flow_jobs
165
174
  if flow_jobs_success is not UNSET:
166
175
  field_dict["flow_jobs_success"] = flow_jobs_success
176
+ if flow_jobs_duration is not UNSET:
177
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
167
178
  if branch_chosen is not UNSET:
168
179
  field_dict["branch_chosen"] = branch_chosen
169
180
  if branchall is not UNSET:
@@ -198,6 +209,9 @@ class ListJobsResponse200ItemType0FlowStatusModulesItem:
198
209
  from ..models.list_jobs_response_200_item_type_0_flow_status_modules_item_branchall import (
199
210
  ListJobsResponse200ItemType0FlowStatusModulesItemBranchall,
200
211
  )
212
+ from ..models.list_jobs_response_200_item_type_0_flow_status_modules_item_flow_jobs_duration import (
213
+ ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration,
214
+ )
201
215
  from ..models.list_jobs_response_200_item_type_0_flow_status_modules_item_iterator import (
202
216
  ListJobsResponse200ItemType0FlowStatusModulesItemIterator,
203
217
  )
@@ -224,6 +238,15 @@ class ListJobsResponse200ItemType0FlowStatusModulesItem:
224
238
 
225
239
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
226
240
 
241
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
242
+ flow_jobs_duration: Union[Unset, ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration]
243
+ if isinstance(_flow_jobs_duration, Unset):
244
+ flow_jobs_duration = UNSET
245
+ else:
246
+ flow_jobs_duration = ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration.from_dict(
247
+ _flow_jobs_duration
248
+ )
249
+
227
250
  _branch_chosen = d.pop("branch_chosen", UNSET)
228
251
  branch_chosen: Union[Unset, ListJobsResponse200ItemType0FlowStatusModulesItemBranchChosen]
229
252
  if isinstance(_branch_chosen, Unset):
@@ -294,6 +317,7 @@ class ListJobsResponse200ItemType0FlowStatusModulesItem:
294
317
  iterator=iterator,
295
318
  flow_jobs=flow_jobs,
296
319
  flow_jobs_success=flow_jobs_success,
320
+ flow_jobs_duration=flow_jobs_duration,
297
321
  branch_chosen=branch_chosen,
298
322
  branchall=branchall,
299
323
  approvers=approvers,
@@ -0,0 +1,71 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class ListJobsResponse200ItemType0FlowStatusModulesItemFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ list_jobs_response_200_item_type_0_flow_status_modules_item_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ list_jobs_response_200_item_type_0_flow_status_modules_item_flow_jobs_duration.additional_properties = d
55
+ return list_jobs_response_200_item_type_0_flow_status_modules_item_flow_jobs_duration
56
+
57
+ @property
58
+ def additional_keys(self) -> List[str]:
59
+ return list(self.additional_properties.keys())
60
+
61
+ def __getitem__(self, key: str) -> Any:
62
+ return self.additional_properties[key]
63
+
64
+ def __setitem__(self, key: str, value: Any) -> None:
65
+ self.additional_properties[key] = value
66
+
67
+ def __delitem__(self, key: str) -> None:
68
+ del self.additional_properties[key]
69
+
70
+ def __contains__(self, key: str) -> bool:
71
+ return key in self.additional_properties
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.list_jobs_response_200_item_type_0_flow_status_preprocessor_module_branchall import (
25
25
  ListJobsResponse200ItemType0FlowStatusPreprocessorModuleBranchall,
26
26
  )
27
+ from ..models.list_jobs_response_200_item_type_0_flow_status_preprocessor_module_flow_jobs_duration import (
28
+ ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration,
29
+ )
27
30
  from ..models.list_jobs_response_200_item_type_0_flow_status_preprocessor_module_iterator import (
28
31
  ListJobsResponse200ItemType0FlowStatusPreprocessorModuleIterator,
29
32
  )
@@ -44,6 +47,7 @@ class ListJobsResponse200ItemType0FlowStatusPreprocessorModule:
44
47
  iterator (Union[Unset, ListJobsResponse200ItemType0FlowStatusPreprocessorModuleIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset, ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration]):
47
51
  branch_chosen (Union[Unset, ListJobsResponse200ItemType0FlowStatusPreprocessorModuleBranchChosen]):
48
52
  branchall (Union[Unset, ListJobsResponse200ItemType0FlowStatusPreprocessorModuleBranchall]):
49
53
  approvers (Union[Unset, List['ListJobsResponse200ItemType0FlowStatusPreprocessorModuleApproversItem']]):
@@ -63,6 +67,7 @@ class ListJobsResponse200ItemType0FlowStatusPreprocessorModule:
63
67
  iterator: Union[Unset, "ListJobsResponse200ItemType0FlowStatusPreprocessorModuleIterator"] = UNSET
64
68
  flow_jobs: Union[Unset, List[str]] = UNSET
65
69
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
70
+ flow_jobs_duration: Union[Unset, "ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration"] = UNSET
66
71
  branch_chosen: Union[Unset, "ListJobsResponse200ItemType0FlowStatusPreprocessorModuleBranchChosen"] = UNSET
67
72
  branchall: Union[Unset, "ListJobsResponse200ItemType0FlowStatusPreprocessorModuleBranchall"] = UNSET
68
73
  approvers: Union[Unset, List["ListJobsResponse200ItemType0FlowStatusPreprocessorModuleApproversItem"]] = UNSET
@@ -103,6 +108,10 @@ class ListJobsResponse200ItemType0FlowStatusPreprocessorModule:
103
108
  if not isinstance(self.flow_jobs_success, Unset):
104
109
  flow_jobs_success = self.flow_jobs_success
105
110
 
111
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
112
+ if not isinstance(self.flow_jobs_duration, Unset):
113
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
114
+
106
115
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
107
116
  if not isinstance(self.branch_chosen, Unset):
108
117
  branch_chosen = self.branch_chosen.to_dict()
@@ -166,6 +175,8 @@ class ListJobsResponse200ItemType0FlowStatusPreprocessorModule:
166
175
  field_dict["flow_jobs"] = flow_jobs
167
176
  if flow_jobs_success is not UNSET:
168
177
  field_dict["flow_jobs_success"] = flow_jobs_success
178
+ if flow_jobs_duration is not UNSET:
179
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
169
180
  if branch_chosen is not UNSET:
170
181
  field_dict["branch_chosen"] = branch_chosen
171
182
  if branchall is not UNSET:
@@ -200,6 +211,9 @@ class ListJobsResponse200ItemType0FlowStatusPreprocessorModule:
200
211
  from ..models.list_jobs_response_200_item_type_0_flow_status_preprocessor_module_branchall import (
201
212
  ListJobsResponse200ItemType0FlowStatusPreprocessorModuleBranchall,
202
213
  )
214
+ from ..models.list_jobs_response_200_item_type_0_flow_status_preprocessor_module_flow_jobs_duration import (
215
+ ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration,
216
+ )
203
217
  from ..models.list_jobs_response_200_item_type_0_flow_status_preprocessor_module_iterator import (
204
218
  ListJobsResponse200ItemType0FlowStatusPreprocessorModuleIterator,
205
219
  )
@@ -226,6 +240,15 @@ class ListJobsResponse200ItemType0FlowStatusPreprocessorModule:
226
240
 
227
241
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
228
242
 
243
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
244
+ flow_jobs_duration: Union[Unset, ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration]
245
+ if isinstance(_flow_jobs_duration, Unset):
246
+ flow_jobs_duration = UNSET
247
+ else:
248
+ flow_jobs_duration = ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration.from_dict(
249
+ _flow_jobs_duration
250
+ )
251
+
229
252
  _branch_chosen = d.pop("branch_chosen", UNSET)
230
253
  branch_chosen: Union[Unset, ListJobsResponse200ItemType0FlowStatusPreprocessorModuleBranchChosen]
231
254
  if isinstance(_branch_chosen, Unset):
@@ -298,6 +321,7 @@ class ListJobsResponse200ItemType0FlowStatusPreprocessorModule:
298
321
  iterator=iterator,
299
322
  flow_jobs=flow_jobs,
300
323
  flow_jobs_success=flow_jobs_success,
324
+ flow_jobs_duration=flow_jobs_duration,
301
325
  branch_chosen=branch_chosen,
302
326
  branchall=branchall,
303
327
  approvers=approvers,
@@ -0,0 +1,71 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class ListJobsResponse200ItemType0FlowStatusPreprocessorModuleFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ list_jobs_response_200_item_type_0_flow_status_preprocessor_module_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ list_jobs_response_200_item_type_0_flow_status_preprocessor_module_flow_jobs_duration.additional_properties = d
55
+ return list_jobs_response_200_item_type_0_flow_status_preprocessor_module_flow_jobs_duration
56
+
57
+ @property
58
+ def additional_keys(self) -> List[str]:
59
+ return list(self.additional_properties.keys())
60
+
61
+ def __getitem__(self, key: str) -> Any:
62
+ return self.additional_properties[key]
63
+
64
+ def __setitem__(self, key: str, value: Any) -> None:
65
+ self.additional_properties[key] = value
66
+
67
+ def __delitem__(self, key: str) -> None:
68
+ del self.additional_properties[key]
69
+
70
+ def __contains__(self, key: str) -> bool:
71
+ return key in self.additional_properties
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.list_jobs_response_200_item_type_1_flow_status_failure_module_branchall import (
25
25
  ListJobsResponse200ItemType1FlowStatusFailureModuleBranchall,
26
26
  )
27
+ from ..models.list_jobs_response_200_item_type_1_flow_status_failure_module_flow_jobs_duration import (
28
+ ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration,
29
+ )
27
30
  from ..models.list_jobs_response_200_item_type_1_flow_status_failure_module_iterator import (
28
31
  ListJobsResponse200ItemType1FlowStatusFailureModuleIterator,
29
32
  )
@@ -44,6 +47,7 @@ class ListJobsResponse200ItemType1FlowStatusFailureModule:
44
47
  iterator (Union[Unset, ListJobsResponse200ItemType1FlowStatusFailureModuleIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset, ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration]):
47
51
  branch_chosen (Union[Unset, ListJobsResponse200ItemType1FlowStatusFailureModuleBranchChosen]):
48
52
  branchall (Union[Unset, ListJobsResponse200ItemType1FlowStatusFailureModuleBranchall]):
49
53
  approvers (Union[Unset, List['ListJobsResponse200ItemType1FlowStatusFailureModuleApproversItem']]):
@@ -64,6 +68,7 @@ class ListJobsResponse200ItemType1FlowStatusFailureModule:
64
68
  iterator: Union[Unset, "ListJobsResponse200ItemType1FlowStatusFailureModuleIterator"] = UNSET
65
69
  flow_jobs: Union[Unset, List[str]] = UNSET
66
70
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
71
+ flow_jobs_duration: Union[Unset, "ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration"] = UNSET
67
72
  branch_chosen: Union[Unset, "ListJobsResponse200ItemType1FlowStatusFailureModuleBranchChosen"] = UNSET
68
73
  branchall: Union[Unset, "ListJobsResponse200ItemType1FlowStatusFailureModuleBranchall"] = UNSET
69
74
  approvers: Union[Unset, List["ListJobsResponse200ItemType1FlowStatusFailureModuleApproversItem"]] = UNSET
@@ -105,6 +110,10 @@ class ListJobsResponse200ItemType1FlowStatusFailureModule:
105
110
  if not isinstance(self.flow_jobs_success, Unset):
106
111
  flow_jobs_success = self.flow_jobs_success
107
112
 
113
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
114
+ if not isinstance(self.flow_jobs_duration, Unset):
115
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
116
+
108
117
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
109
118
  if not isinstance(self.branch_chosen, Unset):
110
119
  branch_chosen = self.branch_chosen.to_dict()
@@ -169,6 +178,8 @@ class ListJobsResponse200ItemType1FlowStatusFailureModule:
169
178
  field_dict["flow_jobs"] = flow_jobs
170
179
  if flow_jobs_success is not UNSET:
171
180
  field_dict["flow_jobs_success"] = flow_jobs_success
181
+ if flow_jobs_duration is not UNSET:
182
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
172
183
  if branch_chosen is not UNSET:
173
184
  field_dict["branch_chosen"] = branch_chosen
174
185
  if branchall is not UNSET:
@@ -205,6 +216,9 @@ class ListJobsResponse200ItemType1FlowStatusFailureModule:
205
216
  from ..models.list_jobs_response_200_item_type_1_flow_status_failure_module_branchall import (
206
217
  ListJobsResponse200ItemType1FlowStatusFailureModuleBranchall,
207
218
  )
219
+ from ..models.list_jobs_response_200_item_type_1_flow_status_failure_module_flow_jobs_duration import (
220
+ ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration,
221
+ )
208
222
  from ..models.list_jobs_response_200_item_type_1_flow_status_failure_module_iterator import (
209
223
  ListJobsResponse200ItemType1FlowStatusFailureModuleIterator,
210
224
  )
@@ -231,6 +245,15 @@ class ListJobsResponse200ItemType1FlowStatusFailureModule:
231
245
 
232
246
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
233
247
 
248
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
249
+ flow_jobs_duration: Union[Unset, ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration]
250
+ if isinstance(_flow_jobs_duration, Unset):
251
+ flow_jobs_duration = UNSET
252
+ else:
253
+ flow_jobs_duration = ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration.from_dict(
254
+ _flow_jobs_duration
255
+ )
256
+
234
257
  _branch_chosen = d.pop("branch_chosen", UNSET)
235
258
  branch_chosen: Union[Unset, ListJobsResponse200ItemType1FlowStatusFailureModuleBranchChosen]
236
259
  if isinstance(_branch_chosen, Unset):
@@ -303,6 +326,7 @@ class ListJobsResponse200ItemType1FlowStatusFailureModule:
303
326
  iterator=iterator,
304
327
  flow_jobs=flow_jobs,
305
328
  flow_jobs_success=flow_jobs_success,
329
+ flow_jobs_duration=flow_jobs_duration,
306
330
  branch_chosen=branch_chosen,
307
331
  branchall=branchall,
308
332
  approvers=approvers,
@@ -0,0 +1,71 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class ListJobsResponse200ItemType1FlowStatusFailureModuleFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ list_jobs_response_200_item_type_1_flow_status_failure_module_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ list_jobs_response_200_item_type_1_flow_status_failure_module_flow_jobs_duration.additional_properties = d
55
+ return list_jobs_response_200_item_type_1_flow_status_failure_module_flow_jobs_duration
56
+
57
+ @property
58
+ def additional_keys(self) -> List[str]:
59
+ return list(self.additional_properties.keys())
60
+
61
+ def __getitem__(self, key: str) -> Any:
62
+ return self.additional_properties[key]
63
+
64
+ def __setitem__(self, key: str, value: Any) -> None:
65
+ self.additional_properties[key] = value
66
+
67
+ def __delitem__(self, key: str) -> None:
68
+ del self.additional_properties[key]
69
+
70
+ def __contains__(self, key: str) -> bool:
71
+ return key in self.additional_properties
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.list_jobs_response_200_item_type_1_flow_status_modules_item_branchall import (
25
25
  ListJobsResponse200ItemType1FlowStatusModulesItemBranchall,
26
26
  )
27
+ from ..models.list_jobs_response_200_item_type_1_flow_status_modules_item_flow_jobs_duration import (
28
+ ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration,
29
+ )
27
30
  from ..models.list_jobs_response_200_item_type_1_flow_status_modules_item_iterator import (
28
31
  ListJobsResponse200ItemType1FlowStatusModulesItemIterator,
29
32
  )
@@ -44,6 +47,7 @@ class ListJobsResponse200ItemType1FlowStatusModulesItem:
44
47
  iterator (Union[Unset, ListJobsResponse200ItemType1FlowStatusModulesItemIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset, ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration]):
47
51
  branch_chosen (Union[Unset, ListJobsResponse200ItemType1FlowStatusModulesItemBranchChosen]):
48
52
  branchall (Union[Unset, ListJobsResponse200ItemType1FlowStatusModulesItemBranchall]):
49
53
  approvers (Union[Unset, List['ListJobsResponse200ItemType1FlowStatusModulesItemApproversItem']]):
@@ -62,6 +66,7 @@ class ListJobsResponse200ItemType1FlowStatusModulesItem:
62
66
  iterator: Union[Unset, "ListJobsResponse200ItemType1FlowStatusModulesItemIterator"] = UNSET
63
67
  flow_jobs: Union[Unset, List[str]] = UNSET
64
68
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
69
+ flow_jobs_duration: Union[Unset, "ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration"] = UNSET
65
70
  branch_chosen: Union[Unset, "ListJobsResponse200ItemType1FlowStatusModulesItemBranchChosen"] = UNSET
66
71
  branchall: Union[Unset, "ListJobsResponse200ItemType1FlowStatusModulesItemBranchall"] = UNSET
67
72
  approvers: Union[Unset, List["ListJobsResponse200ItemType1FlowStatusModulesItemApproversItem"]] = UNSET
@@ -102,6 +107,10 @@ class ListJobsResponse200ItemType1FlowStatusModulesItem:
102
107
  if not isinstance(self.flow_jobs_success, Unset):
103
108
  flow_jobs_success = self.flow_jobs_success
104
109
 
110
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
111
+ if not isinstance(self.flow_jobs_duration, Unset):
112
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
113
+
105
114
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
106
115
  if not isinstance(self.branch_chosen, Unset):
107
116
  branch_chosen = self.branch_chosen.to_dict()
@@ -164,6 +173,8 @@ class ListJobsResponse200ItemType1FlowStatusModulesItem:
164
173
  field_dict["flow_jobs"] = flow_jobs
165
174
  if flow_jobs_success is not UNSET:
166
175
  field_dict["flow_jobs_success"] = flow_jobs_success
176
+ if flow_jobs_duration is not UNSET:
177
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
167
178
  if branch_chosen is not UNSET:
168
179
  field_dict["branch_chosen"] = branch_chosen
169
180
  if branchall is not UNSET:
@@ -198,6 +209,9 @@ class ListJobsResponse200ItemType1FlowStatusModulesItem:
198
209
  from ..models.list_jobs_response_200_item_type_1_flow_status_modules_item_branchall import (
199
210
  ListJobsResponse200ItemType1FlowStatusModulesItemBranchall,
200
211
  )
212
+ from ..models.list_jobs_response_200_item_type_1_flow_status_modules_item_flow_jobs_duration import (
213
+ ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration,
214
+ )
201
215
  from ..models.list_jobs_response_200_item_type_1_flow_status_modules_item_iterator import (
202
216
  ListJobsResponse200ItemType1FlowStatusModulesItemIterator,
203
217
  )
@@ -224,6 +238,15 @@ class ListJobsResponse200ItemType1FlowStatusModulesItem:
224
238
 
225
239
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
226
240
 
241
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
242
+ flow_jobs_duration: Union[Unset, ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration]
243
+ if isinstance(_flow_jobs_duration, Unset):
244
+ flow_jobs_duration = UNSET
245
+ else:
246
+ flow_jobs_duration = ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration.from_dict(
247
+ _flow_jobs_duration
248
+ )
249
+
227
250
  _branch_chosen = d.pop("branch_chosen", UNSET)
228
251
  branch_chosen: Union[Unset, ListJobsResponse200ItemType1FlowStatusModulesItemBranchChosen]
229
252
  if isinstance(_branch_chosen, Unset):
@@ -294,6 +317,7 @@ class ListJobsResponse200ItemType1FlowStatusModulesItem:
294
317
  iterator=iterator,
295
318
  flow_jobs=flow_jobs,
296
319
  flow_jobs_success=flow_jobs_success,
320
+ flow_jobs_duration=flow_jobs_duration,
297
321
  branch_chosen=branch_chosen,
298
322
  branchall=branchall,
299
323
  approvers=approvers,
@@ -0,0 +1,71 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class ListJobsResponse200ItemType1FlowStatusModulesItemFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ list_jobs_response_200_item_type_1_flow_status_modules_item_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ list_jobs_response_200_item_type_1_flow_status_modules_item_flow_jobs_duration.additional_properties = d
55
+ return list_jobs_response_200_item_type_1_flow_status_modules_item_flow_jobs_duration
56
+
57
+ @property
58
+ def additional_keys(self) -> List[str]:
59
+ return list(self.additional_properties.keys())
60
+
61
+ def __getitem__(self, key: str) -> Any:
62
+ return self.additional_properties[key]
63
+
64
+ def __setitem__(self, key: str, value: Any) -> None:
65
+ self.additional_properties[key] = value
66
+
67
+ def __delitem__(self, key: str) -> None:
68
+ del self.additional_properties[key]
69
+
70
+ def __contains__(self, key: str) -> bool:
71
+ return key in self.additional_properties