windmill-api 1.474.0__py3-none-any.whl → 1.475.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 (108) hide show
  1. windmill_api/api/helpers/file_download.py +4 -4
  2. windmill_api/api/mqtt_trigger/__init__.py +0 -0
  3. windmill_api/api/mqtt_trigger/create_mqtt_trigger.py +105 -0
  4. windmill_api/api/mqtt_trigger/delete_mqtt_trigger.py +101 -0
  5. windmill_api/api/mqtt_trigger/exists_mqtt_trigger.py +160 -0
  6. windmill_api/api/mqtt_trigger/get_mqtt_trigger.py +166 -0
  7. windmill_api/api/mqtt_trigger/list_mqtt_triggers.py +237 -0
  8. windmill_api/api/mqtt_trigger/set_mqtt_trigger_enabled.py +113 -0
  9. windmill_api/api/mqtt_trigger/test_mqtt_connection.py +105 -0
  10. windmill_api/api/mqtt_trigger/update_mqtt_trigger.py +113 -0
  11. windmill_api/models/add_granular_acls_kind.py +1 -0
  12. windmill_api/models/app_with_last_version_policy.py +22 -0
  13. windmill_api/models/app_with_last_version_policy_allowed_s3_keys_item.py +66 -0
  14. windmill_api/models/app_with_last_version_w_draft_policy.py +26 -0
  15. windmill_api/models/app_with_last_version_w_draft_policy_allowed_s3_keys_item.py +66 -0
  16. windmill_api/models/capture_config_trigger_kind.py +1 -0
  17. windmill_api/models/capture_trigger_kind.py +1 -0
  18. windmill_api/models/create_app_json_body_policy.py +22 -0
  19. windmill_api/models/create_app_json_body_policy_allowed_s3_keys_item.py +66 -0
  20. windmill_api/models/create_mqtt_trigger_json_body.py +177 -0
  21. windmill_api/models/create_mqtt_trigger_json_body_client_version.py +9 -0
  22. windmill_api/models/create_mqtt_trigger_json_body_subscribe_topics_item.py +70 -0
  23. windmill_api/models/create_mqtt_trigger_json_body_subscribe_topics_item_qos.py +10 -0
  24. windmill_api/models/create_mqtt_trigger_json_body_v3_config.py +58 -0
  25. windmill_api/models/create_mqtt_trigger_json_body_v5_config.py +74 -0
  26. windmill_api/models/edit_mqtt_trigger.py +171 -0
  27. windmill_api/models/edit_mqtt_trigger_client_version.py +9 -0
  28. windmill_api/models/edit_mqtt_trigger_subscribe_topics_item.py +68 -0
  29. windmill_api/models/edit_mqtt_trigger_subscribe_topics_item_qos.py +10 -0
  30. windmill_api/models/edit_mqtt_trigger_v3_config.py +58 -0
  31. windmill_api/models/edit_mqtt_trigger_v5_config.py +74 -0
  32. windmill_api/models/edit_workspace_deploy_ui_settings_json_body_deploy_ui_settings_include_type_item.py +1 -0
  33. windmill_api/models/get_app_by_path_response_200_policy.py +26 -0
  34. windmill_api/models/get_app_by_path_response_200_policy_allowed_s3_keys_item.py +66 -0
  35. windmill_api/models/get_app_by_path_with_draft_response_200_policy.py +28 -0
  36. windmill_api/models/get_app_by_path_with_draft_response_200_policy_allowed_s3_keys_item.py +66 -0
  37. windmill_api/models/get_app_by_version_response_200_policy.py +28 -0
  38. windmill_api/models/get_app_by_version_response_200_policy_allowed_s3_keys_item.py +66 -0
  39. windmill_api/models/get_app_lite_by_path_response_200_policy.py +28 -0
  40. windmill_api/models/get_app_lite_by_path_response_200_policy_allowed_s3_keys_item.py +66 -0
  41. windmill_api/models/get_capture_configs_response_200_item_trigger_kind.py +1 -0
  42. windmill_api/models/get_capture_response_200_trigger_kind.py +1 -0
  43. windmill_api/models/get_granular_acls_kind.py +1 -0
  44. windmill_api/models/get_mqtt_trigger_response_200.py +249 -0
  45. windmill_api/models/get_mqtt_trigger_response_200_client_version.py +9 -0
  46. windmill_api/models/get_mqtt_trigger_response_200_extra_perms.py +44 -0
  47. windmill_api/models/get_mqtt_trigger_response_200_subscribe_topics_item.py +70 -0
  48. windmill_api/models/get_mqtt_trigger_response_200_subscribe_topics_item_qos.py +10 -0
  49. windmill_api/models/get_mqtt_trigger_response_200v3_config.py +58 -0
  50. windmill_api/models/get_mqtt_trigger_response_200v5_config.py +74 -0
  51. windmill_api/models/get_public_app_by_custom_path_response_200_policy.py +28 -0
  52. windmill_api/models/get_public_app_by_custom_path_response_200_policy_allowed_s3_keys_item.py +66 -0
  53. windmill_api/models/get_public_app_by_secret_response_200_policy.py +28 -0
  54. windmill_api/models/get_public_app_by_secret_response_200_policy_allowed_s3_keys_item.py +66 -0
  55. windmill_api/models/get_settings_response_200_deploy_ui_include_type_item.py +1 -0
  56. windmill_api/models/get_triggers_count_of_flow_response_200.py +8 -0
  57. windmill_api/models/get_triggers_count_of_script_response_200.py +8 -0
  58. windmill_api/models/get_used_triggers_response_200.py +7 -0
  59. windmill_api/models/list_captures_response_200_item_trigger_kind.py +1 -0
  60. windmill_api/models/list_captures_trigger_kind.py +1 -0
  61. windmill_api/models/list_mqtt_triggers_response_200_item.py +251 -0
  62. windmill_api/models/list_mqtt_triggers_response_200_item_client_version.py +9 -0
  63. windmill_api/models/list_mqtt_triggers_response_200_item_extra_perms.py +44 -0
  64. windmill_api/models/list_mqtt_triggers_response_200_item_subscribe_topics_item.py +70 -0
  65. windmill_api/models/list_mqtt_triggers_response_200_item_subscribe_topics_item_qos.py +10 -0
  66. windmill_api/models/list_mqtt_triggers_response_200_item_v3_config.py +58 -0
  67. windmill_api/models/list_mqtt_triggers_response_200_item_v5_config.py +74 -0
  68. windmill_api/models/mqtt_client_version.py +9 -0
  69. windmill_api/models/mqtt_qo_s.py +10 -0
  70. windmill_api/models/mqtt_subscribe_topic.py +68 -0
  71. windmill_api/models/mqtt_subscribe_topic_qos.py +10 -0
  72. windmill_api/models/mqtt_trigger.py +245 -0
  73. windmill_api/models/mqtt_trigger_client_version.py +9 -0
  74. windmill_api/models/mqtt_trigger_extra_perms.py +44 -0
  75. windmill_api/models/mqtt_trigger_subscribe_topics_item.py +68 -0
  76. windmill_api/models/mqtt_trigger_subscribe_topics_item_qos.py +10 -0
  77. windmill_api/models/mqtt_trigger_v3_config.py +58 -0
  78. windmill_api/models/mqtt_trigger_v5_config.py +74 -0
  79. windmill_api/models/mqtt_v3_config.py +58 -0
  80. windmill_api/models/mqtt_v5_config.py +74 -0
  81. windmill_api/models/new_mqtt_trigger.py +173 -0
  82. windmill_api/models/new_mqtt_trigger_client_version.py +9 -0
  83. windmill_api/models/new_mqtt_trigger_subscribe_topics_item.py +68 -0
  84. windmill_api/models/new_mqtt_trigger_subscribe_topics_item_qos.py +10 -0
  85. windmill_api/models/new_mqtt_trigger_v3_config.py +58 -0
  86. windmill_api/models/new_mqtt_trigger_v5_config.py +74 -0
  87. windmill_api/models/ping_capture_config_trigger_kind.py +1 -0
  88. windmill_api/models/policy.py +22 -0
  89. windmill_api/models/policy_allowed_s3_keys_item.py +66 -0
  90. windmill_api/models/remove_granular_acls_kind.py +1 -0
  91. windmill_api/models/set_capture_config_json_body_trigger_kind.py +1 -0
  92. windmill_api/models/set_mqtt_trigger_enabled_json_body.py +58 -0
  93. windmill_api/models/test_mqtt_connection_json_body.py +64 -0
  94. windmill_api/models/test_mqtt_connection_json_body_connection.py +44 -0
  95. windmill_api/models/triggers_count.py +8 -0
  96. windmill_api/models/update_app_json_body_policy.py +22 -0
  97. windmill_api/models/update_app_json_body_policy_allowed_s3_keys_item.py +66 -0
  98. windmill_api/models/update_mqtt_trigger_json_body.py +175 -0
  99. windmill_api/models/update_mqtt_trigger_json_body_client_version.py +9 -0
  100. windmill_api/models/update_mqtt_trigger_json_body_subscribe_topics_item.py +70 -0
  101. windmill_api/models/update_mqtt_trigger_json_body_subscribe_topics_item_qos.py +10 -0
  102. windmill_api/models/update_mqtt_trigger_json_body_v3_config.py +58 -0
  103. windmill_api/models/update_mqtt_trigger_json_body_v5_config.py +74 -0
  104. windmill_api/models/workspace_deploy_ui_settings_include_type_item.py +1 -0
  105. {windmill_api-1.474.0.dist-info → windmill_api-1.475.0.dist-info}/METADATA +1 -1
  106. {windmill_api-1.474.0.dist-info → windmill_api-1.475.0.dist-info}/RECORD +108 -34
  107. {windmill_api-1.474.0.dist-info → windmill_api-1.475.0.dist-info}/LICENSE +0 -0
  108. {windmill_api-1.474.0.dist-info → windmill_api-1.475.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,66 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union
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="AppWithLastVersionPolicyAllowedS3KeysItem")
9
+
10
+
11
+ @_attrs_define
12
+ class AppWithLastVersionPolicyAllowedS3KeysItem:
13
+ """
14
+ Attributes:
15
+ s3_path (Union[Unset, str]):
16
+ resource (Union[Unset, str]):
17
+ """
18
+
19
+ s3_path: Union[Unset, str] = UNSET
20
+ resource: Union[Unset, str] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ s3_path = self.s3_path
25
+ resource = self.resource
26
+
27
+ field_dict: Dict[str, Any] = {}
28
+ field_dict.update(self.additional_properties)
29
+ field_dict.update({})
30
+ if s3_path is not UNSET:
31
+ field_dict["s3_path"] = s3_path
32
+ if resource is not UNSET:
33
+ field_dict["resource"] = resource
34
+
35
+ return field_dict
36
+
37
+ @classmethod
38
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
39
+ d = src_dict.copy()
40
+ s3_path = d.pop("s3_path", UNSET)
41
+
42
+ resource = d.pop("resource", UNSET)
43
+
44
+ app_with_last_version_policy_allowed_s3_keys_item = cls(
45
+ s3_path=s3_path,
46
+ resource=resource,
47
+ )
48
+
49
+ app_with_last_version_policy_allowed_s3_keys_item.additional_properties = d
50
+ return app_with_last_version_policy_allowed_s3_keys_item
51
+
52
+ @property
53
+ def additional_keys(self) -> List[str]:
54
+ return list(self.additional_properties.keys())
55
+
56
+ def __getitem__(self, key: str) -> Any:
57
+ return self.additional_properties[key]
58
+
59
+ def __setitem__(self, key: str, value: Any) -> None:
60
+ self.additional_properties[key] = value
61
+
62
+ def __delitem__(self, key: str) -> None:
63
+ del self.additional_properties[key]
64
+
65
+ def __contains__(self, key: str) -> bool:
66
+ return key in self.additional_properties
@@ -7,6 +7,9 @@ from ..models.app_with_last_version_w_draft_policy_execution_mode import AppWith
7
7
  from ..types import UNSET, Unset
8
8
 
9
9
  if TYPE_CHECKING:
10
+ from ..models.app_with_last_version_w_draft_policy_allowed_s3_keys_item import (
11
+ AppWithLastVersionWDraftPolicyAllowedS3KeysItem,
12
+ )
10
13
  from ..models.app_with_last_version_w_draft_policy_s3_inputs_item import AppWithLastVersionWDraftPolicyS3InputsItem
11
14
  from ..models.app_with_last_version_w_draft_policy_triggerables import AppWithLastVersionWDraftPolicyTriggerables
12
15
  from ..models.app_with_last_version_w_draft_policy_triggerables_v2 import (
@@ -24,6 +27,7 @@ class AppWithLastVersionWDraftPolicy:
24
27
  triggerables (Union[Unset, AppWithLastVersionWDraftPolicyTriggerables]):
25
28
  triggerables_v2 (Union[Unset, AppWithLastVersionWDraftPolicyTriggerablesV2]):
26
29
  s3_inputs (Union[Unset, List['AppWithLastVersionWDraftPolicyS3InputsItem']]):
30
+ allowed_s3_keys (Union[Unset, List['AppWithLastVersionWDraftPolicyAllowedS3KeysItem']]):
27
31
  execution_mode (Union[Unset, AppWithLastVersionWDraftPolicyExecutionMode]):
28
32
  on_behalf_of (Union[Unset, str]):
29
33
  on_behalf_of_email (Union[Unset, str]):
@@ -32,6 +36,7 @@ class AppWithLastVersionWDraftPolicy:
32
36
  triggerables: Union[Unset, "AppWithLastVersionWDraftPolicyTriggerables"] = UNSET
33
37
  triggerables_v2: Union[Unset, "AppWithLastVersionWDraftPolicyTriggerablesV2"] = UNSET
34
38
  s3_inputs: Union[Unset, List["AppWithLastVersionWDraftPolicyS3InputsItem"]] = UNSET
39
+ allowed_s3_keys: Union[Unset, List["AppWithLastVersionWDraftPolicyAllowedS3KeysItem"]] = UNSET
35
40
  execution_mode: Union[Unset, AppWithLastVersionWDraftPolicyExecutionMode] = UNSET
36
41
  on_behalf_of: Union[Unset, str] = UNSET
37
42
  on_behalf_of_email: Union[Unset, str] = UNSET
@@ -54,6 +59,14 @@ class AppWithLastVersionWDraftPolicy:
54
59
 
55
60
  s3_inputs.append(s3_inputs_item)
56
61
 
62
+ allowed_s3_keys: Union[Unset, List[Dict[str, Any]]] = UNSET
63
+ if not isinstance(self.allowed_s3_keys, Unset):
64
+ allowed_s3_keys = []
65
+ for allowed_s3_keys_item_data in self.allowed_s3_keys:
66
+ allowed_s3_keys_item = allowed_s3_keys_item_data.to_dict()
67
+
68
+ allowed_s3_keys.append(allowed_s3_keys_item)
69
+
57
70
  execution_mode: Union[Unset, str] = UNSET
58
71
  if not isinstance(self.execution_mode, Unset):
59
72
  execution_mode = self.execution_mode.value
@@ -70,6 +83,8 @@ class AppWithLastVersionWDraftPolicy:
70
83
  field_dict["triggerables_v2"] = triggerables_v2
71
84
  if s3_inputs is not UNSET:
72
85
  field_dict["s3_inputs"] = s3_inputs
86
+ if allowed_s3_keys is not UNSET:
87
+ field_dict["allowed_s3_keys"] = allowed_s3_keys
73
88
  if execution_mode is not UNSET:
74
89
  field_dict["execution_mode"] = execution_mode
75
90
  if on_behalf_of is not UNSET:
@@ -81,6 +96,9 @@ class AppWithLastVersionWDraftPolicy:
81
96
 
82
97
  @classmethod
83
98
  def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
99
+ from ..models.app_with_last_version_w_draft_policy_allowed_s3_keys_item import (
100
+ AppWithLastVersionWDraftPolicyAllowedS3KeysItem,
101
+ )
84
102
  from ..models.app_with_last_version_w_draft_policy_s3_inputs_item import (
85
103
  AppWithLastVersionWDraftPolicyS3InputsItem,
86
104
  )
@@ -113,6 +131,13 @@ class AppWithLastVersionWDraftPolicy:
113
131
 
114
132
  s3_inputs.append(s3_inputs_item)
115
133
 
134
+ allowed_s3_keys = []
135
+ _allowed_s3_keys = d.pop("allowed_s3_keys", UNSET)
136
+ for allowed_s3_keys_item_data in _allowed_s3_keys or []:
137
+ allowed_s3_keys_item = AppWithLastVersionWDraftPolicyAllowedS3KeysItem.from_dict(allowed_s3_keys_item_data)
138
+
139
+ allowed_s3_keys.append(allowed_s3_keys_item)
140
+
116
141
  _execution_mode = d.pop("execution_mode", UNSET)
117
142
  execution_mode: Union[Unset, AppWithLastVersionWDraftPolicyExecutionMode]
118
143
  if isinstance(_execution_mode, Unset):
@@ -128,6 +153,7 @@ class AppWithLastVersionWDraftPolicy:
128
153
  triggerables=triggerables,
129
154
  triggerables_v2=triggerables_v2,
130
155
  s3_inputs=s3_inputs,
156
+ allowed_s3_keys=allowed_s3_keys,
131
157
  execution_mode=execution_mode,
132
158
  on_behalf_of=on_behalf_of,
133
159
  on_behalf_of_email=on_behalf_of_email,
@@ -0,0 +1,66 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union
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="AppWithLastVersionWDraftPolicyAllowedS3KeysItem")
9
+
10
+
11
+ @_attrs_define
12
+ class AppWithLastVersionWDraftPolicyAllowedS3KeysItem:
13
+ """
14
+ Attributes:
15
+ s3_path (Union[Unset, str]):
16
+ resource (Union[Unset, str]):
17
+ """
18
+
19
+ s3_path: Union[Unset, str] = UNSET
20
+ resource: Union[Unset, str] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ s3_path = self.s3_path
25
+ resource = self.resource
26
+
27
+ field_dict: Dict[str, Any] = {}
28
+ field_dict.update(self.additional_properties)
29
+ field_dict.update({})
30
+ if s3_path is not UNSET:
31
+ field_dict["s3_path"] = s3_path
32
+ if resource is not UNSET:
33
+ field_dict["resource"] = resource
34
+
35
+ return field_dict
36
+
37
+ @classmethod
38
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
39
+ d = src_dict.copy()
40
+ s3_path = d.pop("s3_path", UNSET)
41
+
42
+ resource = d.pop("resource", UNSET)
43
+
44
+ app_with_last_version_w_draft_policy_allowed_s3_keys_item = cls(
45
+ s3_path=s3_path,
46
+ resource=resource,
47
+ )
48
+
49
+ app_with_last_version_w_draft_policy_allowed_s3_keys_item.additional_properties = d
50
+ return app_with_last_version_w_draft_policy_allowed_s3_keys_item
51
+
52
+ @property
53
+ def additional_keys(self) -> List[str]:
54
+ return list(self.additional_properties.keys())
55
+
56
+ def __getitem__(self, key: str) -> Any:
57
+ return self.additional_properties[key]
58
+
59
+ def __setitem__(self, key: str, value: Any) -> None:
60
+ self.additional_properties[key] = value
61
+
62
+ def __delitem__(self, key: str) -> None:
63
+ del self.additional_properties[key]
64
+
65
+ def __contains__(self, key: str) -> bool:
66
+ return key in self.additional_properties
@@ -5,6 +5,7 @@ class CaptureConfigTriggerKind(str, Enum):
5
5
  EMAIL = "email"
6
6
  HTTP = "http"
7
7
  KAFKA = "kafka"
8
+ MQTT = "mqtt"
8
9
  NATS = "nats"
9
10
  POSTGRES = "postgres"
10
11
  SQS = "sqs"
@@ -5,6 +5,7 @@ class CaptureTriggerKind(str, Enum):
5
5
  EMAIL = "email"
6
6
  HTTP = "http"
7
7
  KAFKA = "kafka"
8
+ MQTT = "mqtt"
8
9
  NATS = "nats"
9
10
  POSTGRES = "postgres"
10
11
  SQS = "sqs"
@@ -7,6 +7,7 @@ from ..models.create_app_json_body_policy_execution_mode import CreateAppJsonBod
7
7
  from ..types import UNSET, Unset
8
8
 
9
9
  if TYPE_CHECKING:
10
+ from ..models.create_app_json_body_policy_allowed_s3_keys_item import CreateAppJsonBodyPolicyAllowedS3KeysItem
10
11
  from ..models.create_app_json_body_policy_s3_inputs_item import CreateAppJsonBodyPolicyS3InputsItem
11
12
  from ..models.create_app_json_body_policy_triggerables import CreateAppJsonBodyPolicyTriggerables
12
13
  from ..models.create_app_json_body_policy_triggerables_v2 import CreateAppJsonBodyPolicyTriggerablesV2
@@ -22,6 +23,7 @@ class CreateAppJsonBodyPolicy:
22
23
  triggerables (Union[Unset, CreateAppJsonBodyPolicyTriggerables]):
23
24
  triggerables_v2 (Union[Unset, CreateAppJsonBodyPolicyTriggerablesV2]):
24
25
  s3_inputs (Union[Unset, List['CreateAppJsonBodyPolicyS3InputsItem']]):
26
+ allowed_s3_keys (Union[Unset, List['CreateAppJsonBodyPolicyAllowedS3KeysItem']]):
25
27
  execution_mode (Union[Unset, CreateAppJsonBodyPolicyExecutionMode]):
26
28
  on_behalf_of (Union[Unset, str]):
27
29
  on_behalf_of_email (Union[Unset, str]):
@@ -30,6 +32,7 @@ class CreateAppJsonBodyPolicy:
30
32
  triggerables: Union[Unset, "CreateAppJsonBodyPolicyTriggerables"] = UNSET
31
33
  triggerables_v2: Union[Unset, "CreateAppJsonBodyPolicyTriggerablesV2"] = UNSET
32
34
  s3_inputs: Union[Unset, List["CreateAppJsonBodyPolicyS3InputsItem"]] = UNSET
35
+ allowed_s3_keys: Union[Unset, List["CreateAppJsonBodyPolicyAllowedS3KeysItem"]] = UNSET
33
36
  execution_mode: Union[Unset, CreateAppJsonBodyPolicyExecutionMode] = UNSET
34
37
  on_behalf_of: Union[Unset, str] = UNSET
35
38
  on_behalf_of_email: Union[Unset, str] = UNSET
@@ -52,6 +55,14 @@ class CreateAppJsonBodyPolicy:
52
55
 
53
56
  s3_inputs.append(s3_inputs_item)
54
57
 
58
+ allowed_s3_keys: Union[Unset, List[Dict[str, Any]]] = UNSET
59
+ if not isinstance(self.allowed_s3_keys, Unset):
60
+ allowed_s3_keys = []
61
+ for allowed_s3_keys_item_data in self.allowed_s3_keys:
62
+ allowed_s3_keys_item = allowed_s3_keys_item_data.to_dict()
63
+
64
+ allowed_s3_keys.append(allowed_s3_keys_item)
65
+
55
66
  execution_mode: Union[Unset, str] = UNSET
56
67
  if not isinstance(self.execution_mode, Unset):
57
68
  execution_mode = self.execution_mode.value
@@ -68,6 +79,8 @@ class CreateAppJsonBodyPolicy:
68
79
  field_dict["triggerables_v2"] = triggerables_v2
69
80
  if s3_inputs is not UNSET:
70
81
  field_dict["s3_inputs"] = s3_inputs
82
+ if allowed_s3_keys is not UNSET:
83
+ field_dict["allowed_s3_keys"] = allowed_s3_keys
71
84
  if execution_mode is not UNSET:
72
85
  field_dict["execution_mode"] = execution_mode
73
86
  if on_behalf_of is not UNSET:
@@ -79,6 +92,7 @@ class CreateAppJsonBodyPolicy:
79
92
 
80
93
  @classmethod
81
94
  def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
95
+ from ..models.create_app_json_body_policy_allowed_s3_keys_item import CreateAppJsonBodyPolicyAllowedS3KeysItem
82
96
  from ..models.create_app_json_body_policy_s3_inputs_item import CreateAppJsonBodyPolicyS3InputsItem
83
97
  from ..models.create_app_json_body_policy_triggerables import CreateAppJsonBodyPolicyTriggerables
84
98
  from ..models.create_app_json_body_policy_triggerables_v2 import CreateAppJsonBodyPolicyTriggerablesV2
@@ -105,6 +119,13 @@ class CreateAppJsonBodyPolicy:
105
119
 
106
120
  s3_inputs.append(s3_inputs_item)
107
121
 
122
+ allowed_s3_keys = []
123
+ _allowed_s3_keys = d.pop("allowed_s3_keys", UNSET)
124
+ for allowed_s3_keys_item_data in _allowed_s3_keys or []:
125
+ allowed_s3_keys_item = CreateAppJsonBodyPolicyAllowedS3KeysItem.from_dict(allowed_s3_keys_item_data)
126
+
127
+ allowed_s3_keys.append(allowed_s3_keys_item)
128
+
108
129
  _execution_mode = d.pop("execution_mode", UNSET)
109
130
  execution_mode: Union[Unset, CreateAppJsonBodyPolicyExecutionMode]
110
131
  if isinstance(_execution_mode, Unset):
@@ -120,6 +141,7 @@ class CreateAppJsonBodyPolicy:
120
141
  triggerables=triggerables,
121
142
  triggerables_v2=triggerables_v2,
122
143
  s3_inputs=s3_inputs,
144
+ allowed_s3_keys=allowed_s3_keys,
123
145
  execution_mode=execution_mode,
124
146
  on_behalf_of=on_behalf_of,
125
147
  on_behalf_of_email=on_behalf_of_email,
@@ -0,0 +1,66 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union
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="CreateAppJsonBodyPolicyAllowedS3KeysItem")
9
+
10
+
11
+ @_attrs_define
12
+ class CreateAppJsonBodyPolicyAllowedS3KeysItem:
13
+ """
14
+ Attributes:
15
+ s3_path (Union[Unset, str]):
16
+ resource (Union[Unset, str]):
17
+ """
18
+
19
+ s3_path: Union[Unset, str] = UNSET
20
+ resource: Union[Unset, str] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ s3_path = self.s3_path
25
+ resource = self.resource
26
+
27
+ field_dict: Dict[str, Any] = {}
28
+ field_dict.update(self.additional_properties)
29
+ field_dict.update({})
30
+ if s3_path is not UNSET:
31
+ field_dict["s3_path"] = s3_path
32
+ if resource is not UNSET:
33
+ field_dict["resource"] = resource
34
+
35
+ return field_dict
36
+
37
+ @classmethod
38
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
39
+ d = src_dict.copy()
40
+ s3_path = d.pop("s3_path", UNSET)
41
+
42
+ resource = d.pop("resource", UNSET)
43
+
44
+ create_app_json_body_policy_allowed_s3_keys_item = cls(
45
+ s3_path=s3_path,
46
+ resource=resource,
47
+ )
48
+
49
+ create_app_json_body_policy_allowed_s3_keys_item.additional_properties = d
50
+ return create_app_json_body_policy_allowed_s3_keys_item
51
+
52
+ @property
53
+ def additional_keys(self) -> List[str]:
54
+ return list(self.additional_properties.keys())
55
+
56
+ def __getitem__(self, key: str) -> Any:
57
+ return self.additional_properties[key]
58
+
59
+ def __setitem__(self, key: str, value: Any) -> None:
60
+ self.additional_properties[key] = value
61
+
62
+ def __delitem__(self, key: str) -> None:
63
+ del self.additional_properties[key]
64
+
65
+ def __contains__(self, key: str) -> bool:
66
+ return key in self.additional_properties
@@ -0,0 +1,177 @@
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..models.create_mqtt_trigger_json_body_client_version import CreateMqttTriggerJsonBodyClientVersion
7
+ from ..types import UNSET, Unset
8
+
9
+ if TYPE_CHECKING:
10
+ from ..models.create_mqtt_trigger_json_body_subscribe_topics_item import (
11
+ CreateMqttTriggerJsonBodySubscribeTopicsItem,
12
+ )
13
+ from ..models.create_mqtt_trigger_json_body_v3_config import CreateMqttTriggerJsonBodyV3Config
14
+ from ..models.create_mqtt_trigger_json_body_v5_config import CreateMqttTriggerJsonBodyV5Config
15
+
16
+
17
+ T = TypeVar("T", bound="CreateMqttTriggerJsonBody")
18
+
19
+
20
+ @_attrs_define
21
+ class CreateMqttTriggerJsonBody:
22
+ """
23
+ Attributes:
24
+ mqtt_resource_path (str):
25
+ subscribe_topics (List['CreateMqttTriggerJsonBodySubscribeTopicsItem']):
26
+ path (str):
27
+ script_path (str):
28
+ is_flow (bool):
29
+ client_id (Union[Unset, str]):
30
+ v3_config (Union[Unset, CreateMqttTriggerJsonBodyV3Config]):
31
+ v5_config (Union[Unset, CreateMqttTriggerJsonBodyV5Config]):
32
+ client_version (Union[Unset, CreateMqttTriggerJsonBodyClientVersion]):
33
+ enabled (Union[Unset, bool]):
34
+ """
35
+
36
+ mqtt_resource_path: str
37
+ subscribe_topics: List["CreateMqttTriggerJsonBodySubscribeTopicsItem"]
38
+ path: str
39
+ script_path: str
40
+ is_flow: bool
41
+ client_id: Union[Unset, str] = UNSET
42
+ v3_config: Union[Unset, "CreateMqttTriggerJsonBodyV3Config"] = UNSET
43
+ v5_config: Union[Unset, "CreateMqttTriggerJsonBodyV5Config"] = UNSET
44
+ client_version: Union[Unset, CreateMqttTriggerJsonBodyClientVersion] = UNSET
45
+ enabled: Union[Unset, bool] = UNSET
46
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
47
+
48
+ def to_dict(self) -> Dict[str, Any]:
49
+ mqtt_resource_path = self.mqtt_resource_path
50
+ subscribe_topics = []
51
+ for subscribe_topics_item_data in self.subscribe_topics:
52
+ subscribe_topics_item = subscribe_topics_item_data.to_dict()
53
+
54
+ subscribe_topics.append(subscribe_topics_item)
55
+
56
+ path = self.path
57
+ script_path = self.script_path
58
+ is_flow = self.is_flow
59
+ client_id = self.client_id
60
+ v3_config: Union[Unset, Dict[str, Any]] = UNSET
61
+ if not isinstance(self.v3_config, Unset):
62
+ v3_config = self.v3_config.to_dict()
63
+
64
+ v5_config: Union[Unset, Dict[str, Any]] = UNSET
65
+ if not isinstance(self.v5_config, Unset):
66
+ v5_config = self.v5_config.to_dict()
67
+
68
+ client_version: Union[Unset, str] = UNSET
69
+ if not isinstance(self.client_version, Unset):
70
+ client_version = self.client_version.value
71
+
72
+ enabled = self.enabled
73
+
74
+ field_dict: Dict[str, Any] = {}
75
+ field_dict.update(self.additional_properties)
76
+ field_dict.update(
77
+ {
78
+ "mqtt_resource_path": mqtt_resource_path,
79
+ "subscribe_topics": subscribe_topics,
80
+ "path": path,
81
+ "script_path": script_path,
82
+ "is_flow": is_flow,
83
+ }
84
+ )
85
+ if client_id is not UNSET:
86
+ field_dict["client_id"] = client_id
87
+ if v3_config is not UNSET:
88
+ field_dict["v3_config"] = v3_config
89
+ if v5_config is not UNSET:
90
+ field_dict["v5_config"] = v5_config
91
+ if client_version is not UNSET:
92
+ field_dict["client_version"] = client_version
93
+ if enabled is not UNSET:
94
+ field_dict["enabled"] = enabled
95
+
96
+ return field_dict
97
+
98
+ @classmethod
99
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
100
+ from ..models.create_mqtt_trigger_json_body_subscribe_topics_item import (
101
+ CreateMqttTriggerJsonBodySubscribeTopicsItem,
102
+ )
103
+ from ..models.create_mqtt_trigger_json_body_v3_config import CreateMqttTriggerJsonBodyV3Config
104
+ from ..models.create_mqtt_trigger_json_body_v5_config import CreateMqttTriggerJsonBodyV5Config
105
+
106
+ d = src_dict.copy()
107
+ mqtt_resource_path = d.pop("mqtt_resource_path")
108
+
109
+ subscribe_topics = []
110
+ _subscribe_topics = d.pop("subscribe_topics")
111
+ for subscribe_topics_item_data in _subscribe_topics:
112
+ subscribe_topics_item = CreateMqttTriggerJsonBodySubscribeTopicsItem.from_dict(subscribe_topics_item_data)
113
+
114
+ subscribe_topics.append(subscribe_topics_item)
115
+
116
+ path = d.pop("path")
117
+
118
+ script_path = d.pop("script_path")
119
+
120
+ is_flow = d.pop("is_flow")
121
+
122
+ client_id = d.pop("client_id", UNSET)
123
+
124
+ _v3_config = d.pop("v3_config", UNSET)
125
+ v3_config: Union[Unset, CreateMqttTriggerJsonBodyV3Config]
126
+ if isinstance(_v3_config, Unset):
127
+ v3_config = UNSET
128
+ else:
129
+ v3_config = CreateMqttTriggerJsonBodyV3Config.from_dict(_v3_config)
130
+
131
+ _v5_config = d.pop("v5_config", UNSET)
132
+ v5_config: Union[Unset, CreateMqttTriggerJsonBodyV5Config]
133
+ if isinstance(_v5_config, Unset):
134
+ v5_config = UNSET
135
+ else:
136
+ v5_config = CreateMqttTriggerJsonBodyV5Config.from_dict(_v5_config)
137
+
138
+ _client_version = d.pop("client_version", UNSET)
139
+ client_version: Union[Unset, CreateMqttTriggerJsonBodyClientVersion]
140
+ if isinstance(_client_version, Unset):
141
+ client_version = UNSET
142
+ else:
143
+ client_version = CreateMqttTriggerJsonBodyClientVersion(_client_version)
144
+
145
+ enabled = d.pop("enabled", UNSET)
146
+
147
+ create_mqtt_trigger_json_body = cls(
148
+ mqtt_resource_path=mqtt_resource_path,
149
+ subscribe_topics=subscribe_topics,
150
+ path=path,
151
+ script_path=script_path,
152
+ is_flow=is_flow,
153
+ client_id=client_id,
154
+ v3_config=v3_config,
155
+ v5_config=v5_config,
156
+ client_version=client_version,
157
+ enabled=enabled,
158
+ )
159
+
160
+ create_mqtt_trigger_json_body.additional_properties = d
161
+ return create_mqtt_trigger_json_body
162
+
163
+ @property
164
+ def additional_keys(self) -> List[str]:
165
+ return list(self.additional_properties.keys())
166
+
167
+ def __getitem__(self, key: str) -> Any:
168
+ return self.additional_properties[key]
169
+
170
+ def __setitem__(self, key: str, value: Any) -> None:
171
+ self.additional_properties[key] = value
172
+
173
+ def __delitem__(self, key: str) -> None:
174
+ del self.additional_properties[key]
175
+
176
+ def __contains__(self, key: str) -> bool:
177
+ return key in self.additional_properties
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+
4
+ class CreateMqttTriggerJsonBodyClientVersion(str, Enum):
5
+ V3 = "v3"
6
+ V5 = "v5"
7
+
8
+ def __str__(self) -> str:
9
+ return str(self.value)
@@ -0,0 +1,70 @@
1
+ from typing import Any, Dict, List, Type, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..models.create_mqtt_trigger_json_body_subscribe_topics_item_qos import (
7
+ CreateMqttTriggerJsonBodySubscribeTopicsItemQos,
8
+ )
9
+
10
+ T = TypeVar("T", bound="CreateMqttTriggerJsonBodySubscribeTopicsItem")
11
+
12
+
13
+ @_attrs_define
14
+ class CreateMqttTriggerJsonBodySubscribeTopicsItem:
15
+ """
16
+ Attributes:
17
+ qos (CreateMqttTriggerJsonBodySubscribeTopicsItemQos):
18
+ topic (str):
19
+ """
20
+
21
+ qos: CreateMqttTriggerJsonBodySubscribeTopicsItemQos
22
+ topic: str
23
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
24
+
25
+ def to_dict(self) -> Dict[str, Any]:
26
+ qos = self.qos.value
27
+
28
+ topic = self.topic
29
+
30
+ field_dict: Dict[str, Any] = {}
31
+ field_dict.update(self.additional_properties)
32
+ field_dict.update(
33
+ {
34
+ "qos": qos,
35
+ "topic": topic,
36
+ }
37
+ )
38
+
39
+ return field_dict
40
+
41
+ @classmethod
42
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
43
+ d = src_dict.copy()
44
+ qos = CreateMqttTriggerJsonBodySubscribeTopicsItemQos(d.pop("qos"))
45
+
46
+ topic = d.pop("topic")
47
+
48
+ create_mqtt_trigger_json_body_subscribe_topics_item = cls(
49
+ qos=qos,
50
+ topic=topic,
51
+ )
52
+
53
+ create_mqtt_trigger_json_body_subscribe_topics_item.additional_properties = d
54
+ return create_mqtt_trigger_json_body_subscribe_topics_item
55
+
56
+ @property
57
+ def additional_keys(self) -> List[str]:
58
+ return list(self.additional_properties.keys())
59
+
60
+ def __getitem__(self, key: str) -> Any:
61
+ return self.additional_properties[key]
62
+
63
+ def __setitem__(self, key: str, value: Any) -> None:
64
+ self.additional_properties[key] = value
65
+
66
+ def __delitem__(self, key: str) -> None:
67
+ del self.additional_properties[key]
68
+
69
+ def __contains__(self, key: str) -> bool:
70
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class CreateMqttTriggerJsonBodySubscribeTopicsItemQos(str, Enum):
5
+ QOS0 = "qos0"
6
+ QOS1 = "qos1"
7
+ QOS2 = "qos2"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)