dart-tools 0.6.11__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 dart-tools might be problematic. Click here for more details.

Files changed (257) hide show
  1. dart/__init__.py +20 -0
  2. dart/dart.py +1144 -0
  3. dart/exception.py +6 -0
  4. dart/generated/__init__.py +8 -0
  5. dart/generated/api/__init__.py +1 -0
  6. dart/generated/api/attachments/__init__.py +0 -0
  7. dart/generated/api/attachments/attachments_list.py +169 -0
  8. dart/generated/api/comments/__init__.py +0 -0
  9. dart/generated/api/comments/comments_list.py +278 -0
  10. dart/generated/api/dartboards/__init__.py +0 -0
  11. dart/generated/api/dartboards/dartboards_list.py +271 -0
  12. dart/generated/api/dashboards/__init__.py +0 -0
  13. dart/generated/api/dashboards/dashboards_list.py +184 -0
  14. dart/generated/api/docs/__init__.py +0 -0
  15. dart/generated/api/docs/docs_list.py +372 -0
  16. dart/generated/api/folders/__init__.py +0 -0
  17. dart/generated/api/folders/folders_list.py +234 -0
  18. dart/generated/api/form_fields/__init__.py +0 -0
  19. dart/generated/api/form_fields/form_fields_list.py +169 -0
  20. dart/generated/api/forms/__init__.py +0 -0
  21. dart/generated/api/forms/forms_list.py +169 -0
  22. dart/generated/api/layouts/__init__.py +0 -0
  23. dart/generated/api/layouts/layouts_list.py +169 -0
  24. dart/generated/api/links/__init__.py +0 -0
  25. dart/generated/api/links/links_list.py +169 -0
  26. dart/generated/api/options/__init__.py +0 -0
  27. dart/generated/api/options/options_list.py +229 -0
  28. dart/generated/api/properties/__init__.py +0 -0
  29. dart/generated/api/properties/properties_list.py +204 -0
  30. dart/generated/api/reactions/__init__.py +0 -0
  31. dart/generated/api/reactions/reactions_list.py +169 -0
  32. dart/generated/api/relationship_kinds/__init__.py +0 -0
  33. dart/generated/api/relationship_kinds/relationship_kinds_list.py +169 -0
  34. dart/generated/api/relationships/__init__.py +0 -0
  35. dart/generated/api/relationships/relationships_list.py +169 -0
  36. dart/generated/api/spaces/__init__.py +0 -0
  37. dart/generated/api/spaces/spaces_list.py +214 -0
  38. dart/generated/api/statuses/__init__.py +0 -0
  39. dart/generated/api/statuses/statuses_list.py +249 -0
  40. dart/generated/api/task_doc_relationships/__init__.py +0 -0
  41. dart/generated/api/task_doc_relationships/task_doc_relationships_list.py +169 -0
  42. dart/generated/api/task_kinds/__init__.py +0 -0
  43. dart/generated/api/task_kinds/task_kinds_list.py +204 -0
  44. dart/generated/api/tasks/__init__.py +0 -0
  45. dart/generated/api/tasks/tasks_list.py +446 -0
  46. dart/generated/api/tenants/__init__.py +0 -0
  47. dart/generated/api/tenants/tenants_list.py +169 -0
  48. dart/generated/api/transactions/__init__.py +0 -0
  49. dart/generated/api/transactions/transactions_create.py +176 -0
  50. dart/generated/api/user_dartboard_layouts/__init__.py +0 -0
  51. dart/generated/api/user_dartboard_layouts/user_dartboard_layouts_list.py +169 -0
  52. dart/generated/api/user_data/__init__.py +0 -0
  53. dart/generated/api/user_data/user_data_entity_retrieve.py +580 -0
  54. dart/generated/api/users/__init__.py +0 -0
  55. dart/generated/api/users/users_list.py +214 -0
  56. dart/generated/api/views/__init__.py +0 -0
  57. dart/generated/api/views/views_list.py +184 -0
  58. dart/generated/api/webhooks/__init__.py +0 -0
  59. dart/generated/api/webhooks/webhooks_list.py +169 -0
  60. dart/generated/client.py +268 -0
  61. dart/generated/errors.py +16 -0
  62. dart/generated/models/__init__.py +373 -0
  63. dart/generated/models/attachment.py +112 -0
  64. dart/generated/models/attachment_create.py +121 -0
  65. dart/generated/models/attachment_update.py +125 -0
  66. dart/generated/models/bar_chart_adtl.py +72 -0
  67. dart/generated/models/brainstorm.py +149 -0
  68. dart/generated/models/brainstorm_create.py +134 -0
  69. dart/generated/models/brainstorm_state.py +10 -0
  70. dart/generated/models/brainstorm_update.py +153 -0
  71. dart/generated/models/burn_up_chart_adtl.py +103 -0
  72. dart/generated/models/chart.py +208 -0
  73. dart/generated/models/chart_aggregation.py +10 -0
  74. dart/generated/models/chart_type.py +14 -0
  75. dart/generated/models/comment.py +207 -0
  76. dart/generated/models/comment_create.py +146 -0
  77. dart/generated/models/comment_reaction.py +84 -0
  78. dart/generated/models/comment_reaction_create.py +82 -0
  79. dart/generated/models/comment_reaction_update.py +87 -0
  80. dart/generated/models/comment_update.py +148 -0
  81. dart/generated/models/dartboard.py +280 -0
  82. dart/generated/models/dartboard_create.py +285 -0
  83. dart/generated/models/dartboard_kind.py +12 -0
  84. dart/generated/models/dartboard_update.py +287 -0
  85. dart/generated/models/dartboards_list_kind.py +12 -0
  86. dart/generated/models/dashboard.py +185 -0
  87. dart/generated/models/dashboard_create.py +171 -0
  88. dart/generated/models/dashboard_update.py +173 -0
  89. dart/generated/models/discord_integration.py +72 -0
  90. dart/generated/models/doc.py +243 -0
  91. dart/generated/models/doc_create.py +295 -0
  92. dart/generated/models/doc_source_type.py +13 -0
  93. dart/generated/models/doc_update.py +295 -0
  94. dart/generated/models/docs_list_o_item.py +11 -0
  95. dart/generated/models/entity_name.py +22 -0
  96. dart/generated/models/event.py +420 -0
  97. dart/generated/models/event_actor.py +19 -0
  98. dart/generated/models/event_create.py +158 -0
  99. dart/generated/models/event_kind.py +88 -0
  100. dart/generated/models/event_subscription.py +74 -0
  101. dart/generated/models/event_subscription_update.py +173 -0
  102. dart/generated/models/filter_applicability.py +22 -0
  103. dart/generated/models/filter_assignee.py +116 -0
  104. dart/generated/models/filter_connector.py +9 -0
  105. dart/generated/models/filter_group.py +112 -0
  106. dart/generated/models/filter_search.py +82 -0
  107. dart/generated/models/filter_set.py +116 -0
  108. dart/generated/models/folder.py +150 -0
  109. dart/generated/models/folder_create.py +150 -0
  110. dart/generated/models/folder_kind.py +10 -0
  111. dart/generated/models/folder_update.py +152 -0
  112. dart/generated/models/folders_list_kind.py +10 -0
  113. dart/generated/models/form.py +147 -0
  114. dart/generated/models/form_create.py +141 -0
  115. dart/generated/models/form_field.py +144 -0
  116. dart/generated/models/form_field_create.py +129 -0
  117. dart/generated/models/form_field_update.py +132 -0
  118. dart/generated/models/form_update.py +142 -0
  119. dart/generated/models/github_integration.py +163 -0
  120. dart/generated/models/github_integration_tenant_extension_status.py +11 -0
  121. dart/generated/models/google_data.py +94 -0
  122. dart/generated/models/icon_kind.py +10 -0
  123. dart/generated/models/layout.py +167 -0
  124. dart/generated/models/layout_config.py +70 -0
  125. dart/generated/models/layout_create.py +130 -0
  126. dart/generated/models/layout_kind.py +11 -0
  127. dart/generated/models/layout_kind_config_map.py +56 -0
  128. dart/generated/models/layout_update.py +130 -0
  129. dart/generated/models/line_chart_adtl.py +72 -0
  130. dart/generated/models/models_response.py +671 -0
  131. dart/generated/models/notification.py +120 -0
  132. dart/generated/models/notification_update.py +100 -0
  133. dart/generated/models/notion_integration.py +90 -0
  134. dart/generated/models/notion_integration_tenant_extension_status.py +10 -0
  135. dart/generated/models/number_chart_adtl.py +77 -0
  136. dart/generated/models/operation.py +874 -0
  137. dart/generated/models/operation_kind.py +12 -0
  138. dart/generated/models/operation_model_kind.py +36 -0
  139. dart/generated/models/option.py +118 -0
  140. dart/generated/models/option_create.py +105 -0
  141. dart/generated/models/option_update.py +107 -0
  142. dart/generated/models/paginated_attachment_list.py +122 -0
  143. dart/generated/models/paginated_comment_list.py +122 -0
  144. dart/generated/models/paginated_comment_reaction_list.py +122 -0
  145. dart/generated/models/paginated_dartboard_list.py +122 -0
  146. dart/generated/models/paginated_dashboard_list.py +122 -0
  147. dart/generated/models/paginated_doc_list.py +122 -0
  148. dart/generated/models/paginated_folder_list.py +122 -0
  149. dart/generated/models/paginated_form_field_list.py +122 -0
  150. dart/generated/models/paginated_form_list.py +122 -0
  151. dart/generated/models/paginated_layout_list.py +122 -0
  152. dart/generated/models/paginated_option_list.py +122 -0
  153. dart/generated/models/paginated_property_list.py +122 -0
  154. dart/generated/models/paginated_relationship_kind_list.py +122 -0
  155. dart/generated/models/paginated_relationship_list.py +122 -0
  156. dart/generated/models/paginated_space_list.py +122 -0
  157. dart/generated/models/paginated_status_list.py +122 -0
  158. dart/generated/models/paginated_task_doc_relationship_list.py +122 -0
  159. dart/generated/models/paginated_task_kind_list.py +122 -0
  160. dart/generated/models/paginated_task_link_list.py +122 -0
  161. dart/generated/models/paginated_task_list.py +122 -0
  162. dart/generated/models/paginated_tenant_list.py +122 -0
  163. dart/generated/models/paginated_user_dartboard_layout_list.py +122 -0
  164. dart/generated/models/paginated_user_list.py +122 -0
  165. dart/generated/models/paginated_view_list.py +122 -0
  166. dart/generated/models/paginated_webhook_list.py +122 -0
  167. dart/generated/models/pie_chart_adtl.py +69 -0
  168. dart/generated/models/pie_chart_display_metric.py +9 -0
  169. dart/generated/models/priority.py +11 -0
  170. dart/generated/models/properties_list_kind.py +32 -0
  171. dart/generated/models/property_.py +153 -0
  172. dart/generated/models/property_create.py +137 -0
  173. dart/generated/models/property_kind.py +32 -0
  174. dart/generated/models/property_update.py +146 -0
  175. dart/generated/models/relationship.py +74 -0
  176. dart/generated/models/relationship_create.py +93 -0
  177. dart/generated/models/relationship_kind.py +123 -0
  178. dart/generated/models/relationship_kind_create.py +117 -0
  179. dart/generated/models/relationship_kind_kind.py +12 -0
  180. dart/generated/models/relationship_kind_update.py +119 -0
  181. dart/generated/models/report_kind.py +9 -0
  182. dart/generated/models/request_body.py +80 -0
  183. dart/generated/models/response_body.py +72 -0
  184. dart/generated/models/saml_config.py +77 -0
  185. dart/generated/models/saml_config_tenant_extension_status.py +9 -0
  186. dart/generated/models/slack_integration.py +90 -0
  187. dart/generated/models/slack_integration_tenant_extension_status.py +10 -0
  188. dart/generated/models/sort.py +66 -0
  189. dart/generated/models/space.py +325 -0
  190. dart/generated/models/space_create.py +360 -0
  191. dart/generated/models/space_kind.py +10 -0
  192. dart/generated/models/space_update.py +361 -0
  193. dart/generated/models/sprint_mode.py +9 -0
  194. dart/generated/models/status.py +141 -0
  195. dart/generated/models/status_create.py +125 -0
  196. dart/generated/models/status_kind.py +12 -0
  197. dart/generated/models/status_update.py +135 -0
  198. dart/generated/models/statuses_list_kind.py +12 -0
  199. dart/generated/models/subscription.py +9 -0
  200. dart/generated/models/subtask_display_mode.py +10 -0
  201. dart/generated/models/summary_statistic_kind.py +14 -0
  202. dart/generated/models/table_chart_adtl.py +98 -0
  203. dart/generated/models/task.py +531 -0
  204. dart/generated/models/task_create.py +585 -0
  205. dart/generated/models/task_detail_mode.py +10 -0
  206. dart/generated/models/task_doc_relationship.py +96 -0
  207. dart/generated/models/task_doc_relationship_create.py +74 -0
  208. dart/generated/models/task_kind.py +149 -0
  209. dart/generated/models/task_kind_create.py +144 -0
  210. dart/generated/models/task_kind_kind.py +9 -0
  211. dart/generated/models/task_kind_update.py +153 -0
  212. dart/generated/models/task_kinds_list_kind.py +9 -0
  213. dart/generated/models/task_link.py +131 -0
  214. dart/generated/models/task_link_create.py +152 -0
  215. dart/generated/models/task_link_kind.py +19 -0
  216. dart/generated/models/task_link_update.py +155 -0
  217. dart/generated/models/task_notion_document.py +196 -0
  218. dart/generated/models/task_notion_document_block_children_map_type_0.py +43 -0
  219. dart/generated/models/task_notion_document_block_map_type_0.py +43 -0
  220. dart/generated/models/task_notion_document_page_map_type_0.py +43 -0
  221. dart/generated/models/task_properties.py +43 -0
  222. dart/generated/models/task_source_type.py +31 -0
  223. dart/generated/models/task_update.py +585 -0
  224. dart/generated/models/tenant.py +378 -0
  225. dart/generated/models/tenant_update.py +157 -0
  226. dart/generated/models/theme.py +10 -0
  227. dart/generated/models/transaction.py +156 -0
  228. dart/generated/models/transaction_kind.py +74 -0
  229. dart/generated/models/transaction_response.py +96 -0
  230. dart/generated/models/user.py +245 -0
  231. dart/generated/models/user_dartboard_layout.py +66 -0
  232. dart/generated/models/user_dartboard_layout_create.py +74 -0
  233. dart/generated/models/user_data_entity_retrieve_entity_kind.py +32 -0
  234. dart/generated/models/user_role.py +12 -0
  235. dart/generated/models/user_status.py +12 -0
  236. dart/generated/models/user_update.py +210 -0
  237. dart/generated/models/validation_error_response.py +64 -0
  238. dart/generated/models/validation_error_response_items.py +43 -0
  239. dart/generated/models/view.py +215 -0
  240. dart/generated/models/view_create.py +213 -0
  241. dart/generated/models/view_kind.py +11 -0
  242. dart/generated/models/view_update.py +215 -0
  243. dart/generated/models/webhook.py +96 -0
  244. dart/generated/models/webhook_create.py +77 -0
  245. dart/generated/models/webhook_update.py +78 -0
  246. dart/generated/models/zapier_integration.py +66 -0
  247. dart/generated/py.typed +1 -0
  248. dart/generated/types.py +45 -0
  249. dart/order_manager.py +62 -0
  250. dart/webhook.py +21 -0
  251. dart_tools-0.6.11.dist-info/LICENSE +21 -0
  252. dart_tools-0.6.11.dist-info/METADATA +221 -0
  253. dart_tools-0.6.11.dist-info/RECORD +257 -0
  254. dart_tools-0.6.11.dist-info/WHEEL +5 -0
  255. dart_tools-0.6.11.dist-info/dist/dart-tools-0.3.3.tar.gz +0 -0
  256. dart_tools-0.6.11.dist-info/entry_points.txt +2 -0
  257. dart_tools-0.6.11.dist-info/top_level.txt +1 -0
@@ -0,0 +1,378 @@
1
+ import datetime
2
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+ from dateutil.parser import isoparse
7
+
8
+ from ..models.subscription import Subscription
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.discord_integration import DiscordIntegration
12
+ from ..models.github_integration import GithubIntegration
13
+ from ..models.notion_integration import NotionIntegration
14
+ from ..models.saml_config import SamlConfig
15
+ from ..models.slack_integration import SlackIntegration
16
+ from ..models.zapier_integration import ZapierIntegration
17
+
18
+
19
+ T = TypeVar("T", bound="Tenant")
20
+
21
+
22
+ @_attrs_define
23
+ class Tenant:
24
+ """
25
+ Attributes:
26
+ duid (str):
27
+ is_dart (bool):
28
+ name (str):
29
+ created_at (datetime.datetime):
30
+ timezone (str):
31
+ subscription (Subscription): * `Personal` - PERSONAL
32
+ * `Premium` - PREMIUM
33
+ entitlement_overrides (Any):
34
+ image_url (Union[None, str]):
35
+ backlog_enabled (bool):
36
+ ai_assignment_enabled (bool):
37
+ email_integration_enabled (bool):
38
+ close_parent_on_close_all_subtasks (bool):
39
+ move_subtasks_on_move_parent (bool):
40
+ update_subtasks_status_on_update_parent_status (bool):
41
+ copy_parent_fields_on_create (bool):
42
+ update_blockee_dates_on_update_blocker_due_date (bool):
43
+ webhook_enabled (bool):
44
+ webhook_secret (str):
45
+ saml_config (Union['SamlConfig', None]):
46
+ notion_integration (Union['NotionIntegration', None]):
47
+ slack_integration (Union['SlackIntegration', None]):
48
+ discord_integration (Union['DiscordIntegration', None]):
49
+ github_integration (Union['GithubIntegration', None]):
50
+ zapier_integration (Union['ZapierIntegration', None]):
51
+ """
52
+
53
+ duid: str
54
+ is_dart: bool
55
+ name: str
56
+ created_at: datetime.datetime
57
+ timezone: str
58
+ subscription: Subscription
59
+ entitlement_overrides: Any
60
+ image_url: Union[None, str]
61
+ backlog_enabled: bool
62
+ ai_assignment_enabled: bool
63
+ email_integration_enabled: bool
64
+ close_parent_on_close_all_subtasks: bool
65
+ move_subtasks_on_move_parent: bool
66
+ update_subtasks_status_on_update_parent_status: bool
67
+ copy_parent_fields_on_create: bool
68
+ update_blockee_dates_on_update_blocker_due_date: bool
69
+ webhook_enabled: bool
70
+ webhook_secret: str
71
+ saml_config: Union["SamlConfig", None]
72
+ notion_integration: Union["NotionIntegration", None]
73
+ slack_integration: Union["SlackIntegration", None]
74
+ discord_integration: Union["DiscordIntegration", None]
75
+ github_integration: Union["GithubIntegration", None]
76
+ zapier_integration: Union["ZapierIntegration", None]
77
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
78
+
79
+ def to_dict(self) -> Dict[str, Any]:
80
+ from ..models.discord_integration import DiscordIntegration
81
+ from ..models.github_integration import GithubIntegration
82
+ from ..models.notion_integration import NotionIntegration
83
+ from ..models.saml_config import SamlConfig
84
+ from ..models.slack_integration import SlackIntegration
85
+ from ..models.zapier_integration import ZapierIntegration
86
+
87
+ duid = self.duid
88
+
89
+ is_dart = self.is_dart
90
+
91
+ name = self.name
92
+
93
+ created_at = self.created_at.isoformat()
94
+
95
+ timezone = self.timezone
96
+
97
+ subscription = self.subscription.value
98
+
99
+ entitlement_overrides = self.entitlement_overrides
100
+
101
+ image_url: Union[None, str]
102
+ image_url = self.image_url
103
+
104
+ backlog_enabled = self.backlog_enabled
105
+
106
+ ai_assignment_enabled = self.ai_assignment_enabled
107
+
108
+ email_integration_enabled = self.email_integration_enabled
109
+
110
+ close_parent_on_close_all_subtasks = self.close_parent_on_close_all_subtasks
111
+
112
+ move_subtasks_on_move_parent = self.move_subtasks_on_move_parent
113
+
114
+ update_subtasks_status_on_update_parent_status = self.update_subtasks_status_on_update_parent_status
115
+
116
+ copy_parent_fields_on_create = self.copy_parent_fields_on_create
117
+
118
+ update_blockee_dates_on_update_blocker_due_date = self.update_blockee_dates_on_update_blocker_due_date
119
+
120
+ webhook_enabled = self.webhook_enabled
121
+
122
+ webhook_secret = self.webhook_secret
123
+
124
+ saml_config: Union[Dict[str, Any], None]
125
+ if isinstance(self.saml_config, SamlConfig):
126
+ saml_config = self.saml_config.to_dict()
127
+ else:
128
+ saml_config = self.saml_config
129
+
130
+ notion_integration: Union[Dict[str, Any], None]
131
+ if isinstance(self.notion_integration, NotionIntegration):
132
+ notion_integration = self.notion_integration.to_dict()
133
+ else:
134
+ notion_integration = self.notion_integration
135
+
136
+ slack_integration: Union[Dict[str, Any], None]
137
+ if isinstance(self.slack_integration, SlackIntegration):
138
+ slack_integration = self.slack_integration.to_dict()
139
+ else:
140
+ slack_integration = self.slack_integration
141
+
142
+ discord_integration: Union[Dict[str, Any], None]
143
+ if isinstance(self.discord_integration, DiscordIntegration):
144
+ discord_integration = self.discord_integration.to_dict()
145
+ else:
146
+ discord_integration = self.discord_integration
147
+
148
+ github_integration: Union[Dict[str, Any], None]
149
+ if isinstance(self.github_integration, GithubIntegration):
150
+ github_integration = self.github_integration.to_dict()
151
+ else:
152
+ github_integration = self.github_integration
153
+
154
+ zapier_integration: Union[Dict[str, Any], None]
155
+ if isinstance(self.zapier_integration, ZapierIntegration):
156
+ zapier_integration = self.zapier_integration.to_dict()
157
+ else:
158
+ zapier_integration = self.zapier_integration
159
+
160
+ field_dict: Dict[str, Any] = {}
161
+ field_dict.update(self.additional_properties)
162
+ field_dict.update(
163
+ {
164
+ "duid": duid,
165
+ "isDart": is_dart,
166
+ "name": name,
167
+ "createdAt": created_at,
168
+ "timezone": timezone,
169
+ "subscription": subscription,
170
+ "entitlementOverrides": entitlement_overrides,
171
+ "imageUrl": image_url,
172
+ "backlogEnabled": backlog_enabled,
173
+ "aiAssignmentEnabled": ai_assignment_enabled,
174
+ "emailIntegrationEnabled": email_integration_enabled,
175
+ "closeParentOnCloseAllSubtasks": close_parent_on_close_all_subtasks,
176
+ "moveSubtasksOnMoveParent": move_subtasks_on_move_parent,
177
+ "updateSubtasksStatusOnUpdateParentStatus": update_subtasks_status_on_update_parent_status,
178
+ "copyParentFieldsOnCreate": copy_parent_fields_on_create,
179
+ "updateBlockeeDatesOnUpdateBlockerDueDate": update_blockee_dates_on_update_blocker_due_date,
180
+ "webhookEnabled": webhook_enabled,
181
+ "webhookSecret": webhook_secret,
182
+ "samlConfig": saml_config,
183
+ "notionIntegration": notion_integration,
184
+ "slackIntegration": slack_integration,
185
+ "discordIntegration": discord_integration,
186
+ "githubIntegration": github_integration,
187
+ "zapierIntegration": zapier_integration,
188
+ }
189
+ )
190
+
191
+ return field_dict
192
+
193
+ @classmethod
194
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
195
+ from ..models.discord_integration import DiscordIntegration
196
+ from ..models.github_integration import GithubIntegration
197
+ from ..models.notion_integration import NotionIntegration
198
+ from ..models.saml_config import SamlConfig
199
+ from ..models.slack_integration import SlackIntegration
200
+ from ..models.zapier_integration import ZapierIntegration
201
+
202
+ d = src_dict.copy()
203
+ duid = d.pop("duid")
204
+
205
+ is_dart = d.pop("isDart")
206
+
207
+ name = d.pop("name")
208
+
209
+ created_at = isoparse(d.pop("createdAt"))
210
+
211
+ timezone = d.pop("timezone")
212
+
213
+ subscription = Subscription(d.pop("subscription"))
214
+
215
+ entitlement_overrides = d.pop("entitlementOverrides")
216
+
217
+ def _parse_image_url(data: object) -> Union[None, str]:
218
+ if data is None:
219
+ return data
220
+ return cast(Union[None, str], data)
221
+
222
+ image_url = _parse_image_url(d.pop("imageUrl"))
223
+
224
+ backlog_enabled = d.pop("backlogEnabled")
225
+
226
+ ai_assignment_enabled = d.pop("aiAssignmentEnabled")
227
+
228
+ email_integration_enabled = d.pop("emailIntegrationEnabled")
229
+
230
+ close_parent_on_close_all_subtasks = d.pop("closeParentOnCloseAllSubtasks")
231
+
232
+ move_subtasks_on_move_parent = d.pop("moveSubtasksOnMoveParent")
233
+
234
+ update_subtasks_status_on_update_parent_status = d.pop("updateSubtasksStatusOnUpdateParentStatus")
235
+
236
+ copy_parent_fields_on_create = d.pop("copyParentFieldsOnCreate")
237
+
238
+ update_blockee_dates_on_update_blocker_due_date = d.pop("updateBlockeeDatesOnUpdateBlockerDueDate")
239
+
240
+ webhook_enabled = d.pop("webhookEnabled")
241
+
242
+ webhook_secret = d.pop("webhookSecret")
243
+
244
+ def _parse_saml_config(data: object) -> Union["SamlConfig", None]:
245
+ if data is None:
246
+ return data
247
+ try:
248
+ if not isinstance(data, dict):
249
+ raise TypeError()
250
+ saml_config_type_0 = SamlConfig.from_dict(data)
251
+
252
+ return saml_config_type_0
253
+ except: # noqa: E722
254
+ pass
255
+ return cast(Union["SamlConfig", None], data)
256
+
257
+ saml_config = _parse_saml_config(d.pop("samlConfig"))
258
+
259
+ def _parse_notion_integration(data: object) -> Union["NotionIntegration", None]:
260
+ if data is None:
261
+ return data
262
+ try:
263
+ if not isinstance(data, dict):
264
+ raise TypeError()
265
+ notion_integration_type_0 = NotionIntegration.from_dict(data)
266
+
267
+ return notion_integration_type_0
268
+ except: # noqa: E722
269
+ pass
270
+ return cast(Union["NotionIntegration", None], data)
271
+
272
+ notion_integration = _parse_notion_integration(d.pop("notionIntegration"))
273
+
274
+ def _parse_slack_integration(data: object) -> Union["SlackIntegration", None]:
275
+ if data is None:
276
+ return data
277
+ try:
278
+ if not isinstance(data, dict):
279
+ raise TypeError()
280
+ slack_integration_type_0 = SlackIntegration.from_dict(data)
281
+
282
+ return slack_integration_type_0
283
+ except: # noqa: E722
284
+ pass
285
+ return cast(Union["SlackIntegration", None], data)
286
+
287
+ slack_integration = _parse_slack_integration(d.pop("slackIntegration"))
288
+
289
+ def _parse_discord_integration(data: object) -> Union["DiscordIntegration", None]:
290
+ if data is None:
291
+ return data
292
+ try:
293
+ if not isinstance(data, dict):
294
+ raise TypeError()
295
+ discord_integration_type_0 = DiscordIntegration.from_dict(data)
296
+
297
+ return discord_integration_type_0
298
+ except: # noqa: E722
299
+ pass
300
+ return cast(Union["DiscordIntegration", None], data)
301
+
302
+ discord_integration = _parse_discord_integration(d.pop("discordIntegration"))
303
+
304
+ def _parse_github_integration(data: object) -> Union["GithubIntegration", None]:
305
+ if data is None:
306
+ return data
307
+ try:
308
+ if not isinstance(data, dict):
309
+ raise TypeError()
310
+ github_integration_type_0 = GithubIntegration.from_dict(data)
311
+
312
+ return github_integration_type_0
313
+ except: # noqa: E722
314
+ pass
315
+ return cast(Union["GithubIntegration", None], data)
316
+
317
+ github_integration = _parse_github_integration(d.pop("githubIntegration"))
318
+
319
+ def _parse_zapier_integration(data: object) -> Union["ZapierIntegration", None]:
320
+ if data is None:
321
+ return data
322
+ try:
323
+ if not isinstance(data, dict):
324
+ raise TypeError()
325
+ zapier_integration_type_0 = ZapierIntegration.from_dict(data)
326
+
327
+ return zapier_integration_type_0
328
+ except: # noqa: E722
329
+ pass
330
+ return cast(Union["ZapierIntegration", None], data)
331
+
332
+ zapier_integration = _parse_zapier_integration(d.pop("zapierIntegration"))
333
+
334
+ tenant = cls(
335
+ duid=duid,
336
+ is_dart=is_dart,
337
+ name=name,
338
+ created_at=created_at,
339
+ timezone=timezone,
340
+ subscription=subscription,
341
+ entitlement_overrides=entitlement_overrides,
342
+ image_url=image_url,
343
+ backlog_enabled=backlog_enabled,
344
+ ai_assignment_enabled=ai_assignment_enabled,
345
+ email_integration_enabled=email_integration_enabled,
346
+ close_parent_on_close_all_subtasks=close_parent_on_close_all_subtasks,
347
+ move_subtasks_on_move_parent=move_subtasks_on_move_parent,
348
+ update_subtasks_status_on_update_parent_status=update_subtasks_status_on_update_parent_status,
349
+ copy_parent_fields_on_create=copy_parent_fields_on_create,
350
+ update_blockee_dates_on_update_blocker_due_date=update_blockee_dates_on_update_blocker_due_date,
351
+ webhook_enabled=webhook_enabled,
352
+ webhook_secret=webhook_secret,
353
+ saml_config=saml_config,
354
+ notion_integration=notion_integration,
355
+ slack_integration=slack_integration,
356
+ discord_integration=discord_integration,
357
+ github_integration=github_integration,
358
+ zapier_integration=zapier_integration,
359
+ )
360
+
361
+ tenant.additional_properties = d
362
+ return tenant
363
+
364
+ @property
365
+ def additional_keys(self) -> List[str]:
366
+ return list(self.additional_properties.keys())
367
+
368
+ def __getitem__(self, key: str) -> Any:
369
+ return self.additional_properties[key]
370
+
371
+ def __setitem__(self, key: str, value: Any) -> None:
372
+ self.additional_properties[key] = value
373
+
374
+ def __delitem__(self, key: str) -> None:
375
+ del self.additional_properties[key]
376
+
377
+ def __contains__(self, key: str) -> bool:
378
+ return key in self.additional_properties
@@ -0,0 +1,157 @@
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="TenantUpdate")
9
+
10
+
11
+ @_attrs_define
12
+ class TenantUpdate:
13
+ """
14
+ Attributes:
15
+ name (Union[Unset, str]):
16
+ timezone (Union[Unset, str]):
17
+ backlog_enabled (Union[Unset, bool]):
18
+ ai_assignment_enabled (Union[Unset, bool]):
19
+ email_integration_enabled (Union[Unset, bool]):
20
+ close_parent_on_close_all_subtasks (Union[Unset, bool]):
21
+ move_subtasks_on_move_parent (Union[Unset, bool]):
22
+ update_subtasks_status_on_update_parent_status (Union[Unset, bool]):
23
+ copy_parent_fields_on_create (Union[Unset, bool]):
24
+ update_blockee_dates_on_update_blocker_due_date (Union[Unset, bool]):
25
+ webhook_enabled (Union[Unset, bool]):
26
+ webhook_secret (Union[Unset, str]):
27
+ """
28
+
29
+ name: Union[Unset, str] = UNSET
30
+ timezone: Union[Unset, str] = UNSET
31
+ backlog_enabled: Union[Unset, bool] = UNSET
32
+ ai_assignment_enabled: Union[Unset, bool] = UNSET
33
+ email_integration_enabled: Union[Unset, bool] = UNSET
34
+ close_parent_on_close_all_subtasks: Union[Unset, bool] = UNSET
35
+ move_subtasks_on_move_parent: Union[Unset, bool] = UNSET
36
+ update_subtasks_status_on_update_parent_status: Union[Unset, bool] = UNSET
37
+ copy_parent_fields_on_create: Union[Unset, bool] = UNSET
38
+ update_blockee_dates_on_update_blocker_due_date: Union[Unset, bool] = UNSET
39
+ webhook_enabled: Union[Unset, bool] = UNSET
40
+ webhook_secret: Union[Unset, str] = UNSET
41
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
42
+
43
+ def to_dict(self) -> Dict[str, Any]:
44
+ name = self.name
45
+
46
+ timezone = self.timezone
47
+
48
+ backlog_enabled = self.backlog_enabled
49
+
50
+ ai_assignment_enabled = self.ai_assignment_enabled
51
+
52
+ email_integration_enabled = self.email_integration_enabled
53
+
54
+ close_parent_on_close_all_subtasks = self.close_parent_on_close_all_subtasks
55
+
56
+ move_subtasks_on_move_parent = self.move_subtasks_on_move_parent
57
+
58
+ update_subtasks_status_on_update_parent_status = self.update_subtasks_status_on_update_parent_status
59
+
60
+ copy_parent_fields_on_create = self.copy_parent_fields_on_create
61
+
62
+ update_blockee_dates_on_update_blocker_due_date = self.update_blockee_dates_on_update_blocker_due_date
63
+
64
+ webhook_enabled = self.webhook_enabled
65
+
66
+ webhook_secret = self.webhook_secret
67
+
68
+ field_dict: Dict[str, Any] = {}
69
+ field_dict.update(self.additional_properties)
70
+ field_dict.update({})
71
+ if name is not UNSET:
72
+ field_dict["name"] = name
73
+ if timezone is not UNSET:
74
+ field_dict["timezone"] = timezone
75
+ if backlog_enabled is not UNSET:
76
+ field_dict["backlogEnabled"] = backlog_enabled
77
+ if ai_assignment_enabled is not UNSET:
78
+ field_dict["aiAssignmentEnabled"] = ai_assignment_enabled
79
+ if email_integration_enabled is not UNSET:
80
+ field_dict["emailIntegrationEnabled"] = email_integration_enabled
81
+ if close_parent_on_close_all_subtasks is not UNSET:
82
+ field_dict["closeParentOnCloseAllSubtasks"] = close_parent_on_close_all_subtasks
83
+ if move_subtasks_on_move_parent is not UNSET:
84
+ field_dict["moveSubtasksOnMoveParent"] = move_subtasks_on_move_parent
85
+ if update_subtasks_status_on_update_parent_status is not UNSET:
86
+ field_dict["updateSubtasksStatusOnUpdateParentStatus"] = update_subtasks_status_on_update_parent_status
87
+ if copy_parent_fields_on_create is not UNSET:
88
+ field_dict["copyParentFieldsOnCreate"] = copy_parent_fields_on_create
89
+ if update_blockee_dates_on_update_blocker_due_date is not UNSET:
90
+ field_dict["updateBlockeeDatesOnUpdateBlockerDueDate"] = update_blockee_dates_on_update_blocker_due_date
91
+ if webhook_enabled is not UNSET:
92
+ field_dict["webhookEnabled"] = webhook_enabled
93
+ if webhook_secret is not UNSET:
94
+ field_dict["webhookSecret"] = webhook_secret
95
+
96
+ return field_dict
97
+
98
+ @classmethod
99
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
100
+ d = src_dict.copy()
101
+ name = d.pop("name", UNSET)
102
+
103
+ timezone = d.pop("timezone", UNSET)
104
+
105
+ backlog_enabled = d.pop("backlogEnabled", UNSET)
106
+
107
+ ai_assignment_enabled = d.pop("aiAssignmentEnabled", UNSET)
108
+
109
+ email_integration_enabled = d.pop("emailIntegrationEnabled", UNSET)
110
+
111
+ close_parent_on_close_all_subtasks = d.pop("closeParentOnCloseAllSubtasks", UNSET)
112
+
113
+ move_subtasks_on_move_parent = d.pop("moveSubtasksOnMoveParent", UNSET)
114
+
115
+ update_subtasks_status_on_update_parent_status = d.pop("updateSubtasksStatusOnUpdateParentStatus", UNSET)
116
+
117
+ copy_parent_fields_on_create = d.pop("copyParentFieldsOnCreate", UNSET)
118
+
119
+ update_blockee_dates_on_update_blocker_due_date = d.pop("updateBlockeeDatesOnUpdateBlockerDueDate", UNSET)
120
+
121
+ webhook_enabled = d.pop("webhookEnabled", UNSET)
122
+
123
+ webhook_secret = d.pop("webhookSecret", UNSET)
124
+
125
+ tenant_update = cls(
126
+ name=name,
127
+ timezone=timezone,
128
+ backlog_enabled=backlog_enabled,
129
+ ai_assignment_enabled=ai_assignment_enabled,
130
+ email_integration_enabled=email_integration_enabled,
131
+ close_parent_on_close_all_subtasks=close_parent_on_close_all_subtasks,
132
+ move_subtasks_on_move_parent=move_subtasks_on_move_parent,
133
+ update_subtasks_status_on_update_parent_status=update_subtasks_status_on_update_parent_status,
134
+ copy_parent_fields_on_create=copy_parent_fields_on_create,
135
+ update_blockee_dates_on_update_blocker_due_date=update_blockee_dates_on_update_blocker_due_date,
136
+ webhook_enabled=webhook_enabled,
137
+ webhook_secret=webhook_secret,
138
+ )
139
+
140
+ tenant_update.additional_properties = d
141
+ return tenant_update
142
+
143
+ @property
144
+ def additional_keys(self) -> List[str]:
145
+ return list(self.additional_properties.keys())
146
+
147
+ def __getitem__(self, key: str) -> Any:
148
+ return self.additional_properties[key]
149
+
150
+ def __setitem__(self, key: str, value: Any) -> None:
151
+ self.additional_properties[key] = value
152
+
153
+ def __delitem__(self, key: str) -> None:
154
+ del self.additional_properties[key]
155
+
156
+ def __contains__(self, key: str) -> bool:
157
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class Theme(str, Enum):
5
+ DARK = "Dark"
6
+ LIGHT = "Light"
7
+ SYSTEM_DEFAULT = "System Default"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)