api-sdk-py 1.11.66__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. api_sdk_py/__init__.py +312 -0
  2. api_sdk_py/api/__init__.py +18 -0
  3. api_sdk_py/api/canvases_api.py +1605 -0
  4. api_sdk_py/api/compositions_api.py +11616 -0
  5. api_sdk_py/api/credits_api.py +628 -0
  6. api_sdk_py/api/entitlements_api.py +676 -0
  7. api_sdk_py/api/invoices_api.py +357 -0
  8. api_sdk_py/api/managed_users_api.py +5087 -0
  9. api_sdk_py/api/operations_api.py +305 -0
  10. api_sdk_py/api/partner_api.py +41365 -0
  11. api_sdk_py/api/partners_api.py +11156 -0
  12. api_sdk_py/api/public_embed_api.py +1938 -0
  13. api_sdk_py/api/tokens_api.py +283 -0
  14. api_sdk_py/api/uploads_api.py +1507 -0
  15. api_sdk_py/api/users_api.py +3649 -0
  16. api_sdk_py/api/widgets_api.py +1300 -0
  17. api_sdk_py/api_client.py +797 -0
  18. api_sdk_py/api_response.py +21 -0
  19. api_sdk_py/configuration.py +526 -0
  20. api_sdk_py/exceptions.py +199 -0
  21. api_sdk_py/models/__init__.py +282 -0
  22. api_sdk_py/models/account_credit_balance.py +96 -0
  23. api_sdk_py/models/account_credit_balance_response.py +99 -0
  24. api_sdk_py/models/account_credit_transaction.py +120 -0
  25. api_sdk_py/models/adapter_connection.py +112 -0
  26. api_sdk_py/models/adapter_connection_removal.py +87 -0
  27. api_sdk_py/models/add_ai_answers_knowledge_document201_response.py +99 -0
  28. api_sdk_py/models/add_ai_answers_knowledge_document_request.py +90 -0
  29. api_sdk_py/models/add_domain_request.py +87 -0
  30. api_sdk_py/models/ai_answers_knowledge.py +101 -0
  31. api_sdk_py/models/ai_answers_knowledge_document.py +113 -0
  32. api_sdk_py/models/ai_answers_knowledge_removal.py +87 -0
  33. api_sdk_py/models/ai_answers_knowledge_totals.py +93 -0
  34. api_sdk_py/models/api_key_scope.py +44 -0
  35. api_sdk_py/models/canvas.py +112 -0
  36. api_sdk_py/models/canvas_response.py +99 -0
  37. api_sdk_py/models/check_composition_access_response.py +99 -0
  38. api_sdk_py/models/check_composition_access_response_data.py +89 -0
  39. api_sdk_py/models/composition.py +133 -0
  40. api_sdk_py/models/composition_data_source.py +90 -0
  41. api_sdk_py/models/composition_data_source_response.py +99 -0
  42. api_sdk_py/models/composition_entries_description.py +99 -0
  43. api_sdk_py/models/composition_entries_description_response.py +99 -0
  44. api_sdk_py/models/composition_entries_reading.py +126 -0
  45. api_sdk_py/models/composition_entries_reading_response.py +99 -0
  46. api_sdk_py/models/composition_entry_aggregate_tally.py +122 -0
  47. api_sdk_py/models/composition_entry_aggregates_block.py +99 -0
  48. api_sdk_py/models/composition_entry_column.py +89 -0
  49. api_sdk_py/models/composition_entry_delete_success.py +93 -0
  50. api_sdk_py/models/composition_entry_delete_success_data.py +87 -0
  51. api_sdk_py/models/composition_entry_item.py +111 -0
  52. api_sdk_py/models/composition_entry_items_meta.py +106 -0
  53. api_sdk_py/models/composition_entry_items_page_success.py +103 -0
  54. api_sdk_py/models/composition_entry_table.py +105 -0
  55. api_sdk_py/models/composition_entry_tally.py +95 -0
  56. api_sdk_py/models/composition_response.py +99 -0
  57. api_sdk_py/models/composition_version.py +96 -0
  58. api_sdk_py/models/content_check_finding.py +93 -0
  59. api_sdk_py/models/content_item_write_result.py +101 -0
  60. api_sdk_py/models/content_item_write_result_validation_result.py +91 -0
  61. api_sdk_py/models/copy_partner_preset_request.py +88 -0
  62. api_sdk_py/models/create_canvas_request.py +118 -0
  63. api_sdk_py/models/create_composition_content_item201_response.py +99 -0
  64. api_sdk_py/models/create_composition_content_item_request.py +101 -0
  65. api_sdk_py/models/create_composition_database_record201_response.py +95 -0
  66. api_sdk_py/models/create_composition_from_preset_request.py +100 -0
  67. api_sdk_py/models/create_composition_from_widget201_response.py +99 -0
  68. api_sdk_py/models/create_composition_from_widget_request.py +102 -0
  69. api_sdk_py/models/create_user_api_key_request.py +106 -0
  70. api_sdk_py/models/create_widget201_response.py +99 -0
  71. api_sdk_py/models/create_widget201_response_data.py +207 -0
  72. api_sdk_py/models/created_user_api_key.py +117 -0
  73. api_sdk_py/models/created_user_api_key_response.py +99 -0
  74. api_sdk_py/models/delete_composition_content_item_response.py +99 -0
  75. api_sdk_py/models/delete_composition_content_item_response_data.py +89 -0
  76. api_sdk_py/models/delete_composition_data_source_response.py +99 -0
  77. api_sdk_py/models/delete_composition_data_source_response_data.py +87 -0
  78. api_sdk_py/models/delete_managed_user200_response.py +99 -0
  79. api_sdk_py/models/delete_personal_workspace_domain_response.py +99 -0
  80. api_sdk_py/models/delete_personal_workspace_domain_response_data.py +87 -0
  81. api_sdk_py/models/delete_user_api_key_response.py +99 -0
  82. api_sdk_py/models/delete_user_api_key_response_data.py +87 -0
  83. api_sdk_py/models/design_defaults.py +92 -0
  84. api_sdk_py/models/duplicate_composition202_response.py +99 -0
  85. api_sdk_py/models/duplicate_composition202_response_data.py +87 -0
  86. api_sdk_py/models/duplicate_composition_request.py +89 -0
  87. api_sdk_py/models/editor_session.py +122 -0
  88. api_sdk_py/models/editor_session_response.py +99 -0
  89. api_sdk_py/models/entitlement.py +118 -0
  90. api_sdk_py/models/error_detail.py +104 -0
  91. api_sdk_py/models/error_response.py +108 -0
  92. api_sdk_py/models/export_composition_entry_items200_response.py +103 -0
  93. api_sdk_py/models/export_composition_entry_items200_response_meta.py +89 -0
  94. api_sdk_py/models/get_ai_answers_knowledge200_response.py +99 -0
  95. api_sdk_py/models/get_all_canvases_response.py +99 -0
  96. api_sdk_py/models/get_all_canvases_response_data.py +101 -0
  97. api_sdk_py/models/get_all_compositions200_response.py +103 -0
  98. api_sdk_py/models/get_all_managed_users200_response.py +103 -0
  99. api_sdk_py/models/get_composition_content_response.py +95 -0
  100. api_sdk_py/models/get_composition_content_schema_response.py +99 -0
  101. api_sdk_py/models/get_composition_content_schema_response_data.py +97 -0
  102. api_sdk_py/models/get_composition_data_source_response.py +104 -0
  103. api_sdk_py/models/get_composition_database_records200_response.py +95 -0
  104. api_sdk_py/models/get_composition_design_response.py +95 -0
  105. api_sdk_py/models/get_composition_design_schema_response.py +99 -0
  106. api_sdk_py/models/get_composition_design_schema_response_data.py +97 -0
  107. api_sdk_py/models/get_composition_embed_schema_response.py +99 -0
  108. api_sdk_py/models/get_composition_embed_schema_response_data.py +107 -0
  109. api_sdk_py/models/get_composition_embed_settings_response.py +95 -0
  110. api_sdk_py/models/get_composition_preview_response.py +99 -0
  111. api_sdk_py/models/get_composition_preview_response_data.py +93 -0
  112. api_sdk_py/models/get_composition_versions200_response.py +103 -0
  113. api_sdk_py/models/get_compositions_batch_request.py +88 -0
  114. api_sdk_py/models/get_compositions_batch_response.py +99 -0
  115. api_sdk_py/models/get_compositions_batch_response_data.py +105 -0
  116. api_sdk_py/models/get_invoices_by_partner_id200_response.py +103 -0
  117. api_sdk_py/models/get_managed_user_entitlements_response.py +99 -0
  118. api_sdk_py/models/get_managed_user_entitlements_response_data.py +97 -0
  119. api_sdk_py/models/get_managed_user_limits200_response.py +99 -0
  120. api_sdk_py/models/get_managed_user_storage_usage200_response.py +99 -0
  121. api_sdk_py/models/get_managed_user_storage_usage200_response_data.py +95 -0
  122. api_sdk_py/models/get_managed_user_storage_usage200_response_data_by_purpose.py +106 -0
  123. api_sdk_py/models/get_managed_users_by_manager_id_response.py +99 -0
  124. api_sdk_py/models/get_managed_users_by_manager_id_response_data.py +101 -0
  125. api_sdk_py/models/get_partner_billing_overview200_response.py +99 -0
  126. api_sdk_py/models/get_partner_credit_transactions200_response.py +103 -0
  127. api_sdk_py/models/get_partner_design_defaults200_response.py +99 -0
  128. api_sdk_py/models/get_partner_entitlements_response.py +99 -0
  129. api_sdk_py/models/get_partner_entitlements_response_data.py +97 -0
  130. api_sdk_py/models/get_personal_workspace_domains200_response.py +103 -0
  131. api_sdk_py/models/get_public_composition_embed200_response.py +133 -0
  132. api_sdk_py/models/get_public_composition_embed200_response_data_source.py +89 -0
  133. api_sdk_py/models/get_public_composition_embed200_response_direct.py +96 -0
  134. api_sdk_py/models/get_user_adapter_connections200_response.py +103 -0
  135. api_sdk_py/models/get_user_api_key_usage_logs_response.py +99 -0
  136. api_sdk_py/models/get_user_api_key_usage_logs_response_data.py +95 -0
  137. api_sdk_py/models/get_user_api_keys200_response.py +103 -0
  138. api_sdk_py/models/get_widgets200_response.py +103 -0
  139. api_sdk_py/models/get_widgets_batch_request.py +87 -0
  140. api_sdk_py/models/get_widgets_batch_response.py +99 -0
  141. api_sdk_py/models/get_widgets_batch_response_data.py +105 -0
  142. api_sdk_py/models/get_widgets_batch_response_data_errors_inner.py +89 -0
  143. api_sdk_py/models/list_partner_presets200_response.py +103 -0
  144. api_sdk_py/models/managed_user.py +105 -0
  145. api_sdk_py/models/managed_user_entries_meta.py +100 -0
  146. api_sdk_py/models/managed_user_entries_page_success.py +103 -0
  147. api_sdk_py/models/managed_user_entry_item.py +115 -0
  148. api_sdk_py/models/managed_user_limits.py +104 -0
  149. api_sdk_py/models/managed_user_operation_usage.py +95 -0
  150. api_sdk_py/models/managed_user_removal.py +89 -0
  151. api_sdk_py/models/managed_user_response.py +99 -0
  152. api_sdk_py/models/managed_user_usage.py +110 -0
  153. api_sdk_py/models/managed_user_usage_response.py +99 -0
  154. api_sdk_py/models/managed_user_usage_totals.py +93 -0
  155. api_sdk_py/models/my_partner.py +136 -0
  156. api_sdk_py/models/my_partners.py +112 -0
  157. api_sdk_py/models/my_partners_response.py +99 -0
  158. api_sdk_py/models/new_composition.py +108 -0
  159. api_sdk_py/models/new_editor_session.py +107 -0
  160. api_sdk_py/models/new_managed_user.py +91 -0
  161. api_sdk_py/models/new_widget.py +118 -0
  162. api_sdk_py/models/operations_id_get_response.py +99 -0
  163. api_sdk_py/models/operations_id_get_response_data.py +113 -0
  164. api_sdk_py/models/partner_analytics_by_managed_user.py +109 -0
  165. api_sdk_py/models/partner_analytics_by_managed_user_response.py +99 -0
  166. api_sdk_py/models/partner_analytics_of_day.py +94 -0
  167. api_sdk_py/models/partner_analytics_of_managed_user.py +126 -0
  168. api_sdk_py/models/partner_analytics_of_widget.py +102 -0
  169. api_sdk_py/models/partner_analytics_summary.py +110 -0
  170. api_sdk_py/models/partner_analytics_summary_response.py +99 -0
  171. api_sdk_py/models/partner_analytics_timeline.py +110 -0
  172. api_sdk_py/models/partner_analytics_timeline_response.py +99 -0
  173. api_sdk_py/models/partner_analytics_top_widgets.py +110 -0
  174. api_sdk_py/models/partner_analytics_top_widgets_response.py +99 -0
  175. api_sdk_py/models/partner_billing_overview.py +114 -0
  176. api_sdk_py/models/partner_billing_overview_billing_integration.py +100 -0
  177. api_sdk_py/models/partner_billing_overview_operational_credits.py +101 -0
  178. api_sdk_py/models/partner_billing_overview_partner.py +100 -0
  179. api_sdk_py/models/partner_contract.py +158 -0
  180. api_sdk_py/models/partner_contract_response.py +99 -0
  181. api_sdk_py/models/partner_customization.py +140 -0
  182. api_sdk_py/models/partner_data_database.py +112 -0
  183. api_sdk_py/models/partner_data_database_removal.py +87 -0
  184. api_sdk_py/models/partner_data_database_removal_response.py +99 -0
  185. api_sdk_py/models/partner_data_database_response.py +99 -0
  186. api_sdk_py/models/partner_entry_context_secret.py +93 -0
  187. api_sdk_py/models/partner_entry_context_secret_response.py +99 -0
  188. api_sdk_py/models/partner_entry_context_signing.py +108 -0
  189. api_sdk_py/models/partner_entry_context_signing_response.py +99 -0
  190. api_sdk_py/models/partner_extra_credits_invoice.py +130 -0
  191. api_sdk_py/models/partner_extra_credits_invoice_response.py +99 -0
  192. api_sdk_py/models/partner_invoice.py +234 -0
  193. api_sdk_py/models/partner_notification.py +108 -0
  194. api_sdk_py/models/partner_notification_default_recipients.py +89 -0
  195. api_sdk_py/models/partner_notification_delivery.py +170 -0
  196. api_sdk_py/models/partner_notification_delivery_log.py +95 -0
  197. api_sdk_py/models/partner_notification_delivery_log_response.py +99 -0
  198. api_sdk_py/models/partner_notification_delivery_response.py +99 -0
  199. api_sdk_py/models/partner_notification_event.py +112 -0
  200. api_sdk_py/models/partner_notification_event_type.py +51 -0
  201. api_sdk_py/models/partner_notification_page.py +103 -0
  202. api_sdk_py/models/partner_notification_page_response.py +99 -0
  203. api_sdk_py/models/partner_notification_settings.py +139 -0
  204. api_sdk_py/models/partner_notification_settings_change.py +98 -0
  205. api_sdk_py/models/partner_notification_settings_change_response.py +99 -0
  206. api_sdk_py/models/partner_notification_settings_response.py +99 -0
  207. api_sdk_py/models/partner_notification_test_event_request.py +88 -0
  208. api_sdk_py/models/partner_notification_test_event_result.py +98 -0
  209. api_sdk_py/models/partner_notification_test_event_result_response.py +99 -0
  210. api_sdk_py/models/partner_preset.py +119 -0
  211. api_sdk_py/models/partner_preset_copy.py +97 -0
  212. api_sdk_py/models/partner_preset_copy_response.py +99 -0
  213. api_sdk_py/models/partner_preset_removal.py +87 -0
  214. api_sdk_py/models/partner_preset_removal_response.py +99 -0
  215. api_sdk_py/models/partner_preset_response.py +99 -0
  216. api_sdk_py/models/partner_report_page.py +91 -0
  217. api_sdk_py/models/partner_report_period.py +90 -0
  218. api_sdk_py/models/partner_storage_destination.py +120 -0
  219. api_sdk_py/models/partner_storage_destination_response.py +99 -0
  220. api_sdk_py/models/partner_storage_removal.py +87 -0
  221. api_sdk_py/models/partner_storage_removal_response.py +99 -0
  222. api_sdk_py/models/partner_storage_usage.py +109 -0
  223. api_sdk_py/models/partner_storage_usage_of_managed_user.py +129 -0
  224. api_sdk_py/models/partner_storage_usage_response.py +99 -0
  225. api_sdk_py/models/partner_storage_usage_totals.py +93 -0
  226. api_sdk_py/models/personal_workspace_domain.py +96 -0
  227. api_sdk_py/models/personal_workspace_domain_result.py +93 -0
  228. api_sdk_py/models/personal_workspace_domain_result_response.py +99 -0
  229. api_sdk_py/models/post_public_composition_embed_status200_response.py +99 -0
  230. api_sdk_py/models/post_public_composition_embed_status200_response_data.py +97 -0
  231. api_sdk_py/models/post_public_composition_embed_status_request.py +88 -0
  232. api_sdk_py/models/public_adapter_call_error.py +93 -0
  233. api_sdk_py/models/public_adapter_call_request.py +113 -0
  234. api_sdk_py/models/public_adapter_call_result.py +93 -0
  235. api_sdk_py/models/public_adapter_call_result_data.py +87 -0
  236. api_sdk_py/models/public_adapter_file_result.py +93 -0
  237. api_sdk_py/models/public_adapter_file_result_data.py +91 -0
  238. api_sdk_py/models/public_adapter_file_result_data_file.py +108 -0
  239. api_sdk_py/models/public_composition_entry_created.py +93 -0
  240. api_sdk_py/models/public_composition_entry_created_data.py +92 -0
  241. api_sdk_py/models/public_composition_entry_request.py +101 -0
  242. api_sdk_py/models/public_embed_failure.py +105 -0
  243. api_sdk_py/models/public_embed_failure_details.py +112 -0
  244. api_sdk_py/models/public_embed_failure_error.py +98 -0
  245. api_sdk_py/models/purpose_storage_bucket.py +89 -0
  246. api_sdk_py/models/remove_ai_answers_knowledge_document200_response.py +99 -0
  247. api_sdk_py/models/remove_user_adapter_connection200_response.py +99 -0
  248. api_sdk_py/models/request_extra_credits.py +88 -0
  249. api_sdk_py/models/response_meta.py +121 -0
  250. api_sdk_py/models/revoke_managed_user_editor_sessions_response.py +99 -0
  251. api_sdk_py/models/revoke_managed_user_editor_sessions_response_data.py +87 -0
  252. api_sdk_py/models/set_adapter_connection_request.py +88 -0
  253. api_sdk_py/models/set_composition_data_source_request.py +90 -0
  254. api_sdk_py/models/set_dynamic_content_request.py +95 -0
  255. api_sdk_py/models/set_dynamic_content_response.py +99 -0
  256. api_sdk_py/models/set_dynamic_content_response_data.py +99 -0
  257. api_sdk_py/models/set_dynamic_content_response_data_validation_result.py +91 -0
  258. api_sdk_py/models/set_managed_user_limits_request.py +93 -0
  259. api_sdk_py/models/set_partner_data_database_request.py +87 -0
  260. api_sdk_py/models/set_partner_design_defaults_request.py +92 -0
  261. api_sdk_py/models/set_partner_preset_request.py +104 -0
  262. api_sdk_py/models/set_partner_storage_destination_request.py +101 -0
  263. api_sdk_py/models/set_user_adapter_connection200_response.py +99 -0
  264. api_sdk_py/models/success_response.py +95 -0
  265. api_sdk_py/models/update_canvas_request.py +96 -0
  266. api_sdk_py/models/update_composition.py +101 -0
  267. api_sdk_py/models/update_composition_status_request.py +94 -0
  268. api_sdk_py/models/update_domain_request.py +87 -0
  269. api_sdk_py/models/update_managed_user.py +91 -0
  270. api_sdk_py/models/update_partner_entry_context_signing_request.py +87 -0
  271. api_sdk_py/models/update_partner_notification_settings_request.py +110 -0
  272. api_sdk_py/models/update_user_api_key_request.py +90 -0
  273. api_sdk_py/models/upload.py +167 -0
  274. api_sdk_py/models/upload_limits.py +97 -0
  275. api_sdk_py/models/upload_limits_response.py +99 -0
  276. api_sdk_py/models/upload_response.py +99 -0
  277. api_sdk_py/models/uploads_get200_response.py +103 -0
  278. api_sdk_py/models/uploads_id_delete200_response.py +99 -0
  279. api_sdk_py/models/uploads_id_delete200_response_data.py +87 -0
  280. api_sdk_py/models/user_api_key.py +122 -0
  281. api_sdk_py/models/user_api_key_response.py +99 -0
  282. api_sdk_py/models/user_api_key_usage_log.py +107 -0
  283. api_sdk_py/models/validate_composition_content_response.py +99 -0
  284. api_sdk_py/models/validate_composition_content_response_data.py +108 -0
  285. api_sdk_py/models/validate_token200_response.py +99 -0
  286. api_sdk_py/models/validate_token200_response_data.py +106 -0
  287. api_sdk_py/models/widget.py +205 -0
  288. api_sdk_py/py.typed +0 -0
  289. api_sdk_py/rest.py +257 -0
  290. api_sdk_py-1.11.66.dist-info/METADATA +28 -0
  291. api_sdk_py-1.11.66.dist-info/RECORD +294 -0
  292. api_sdk_py-1.11.66.dist-info/WHEEL +5 -0
  293. api_sdk_py-1.11.66.dist-info/licenses/LICENSE +122 -0
  294. api_sdk_py-1.11.66.dist-info/top_level.txt +1 -0
@@ -0,0 +1,108 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Widgetic API Gateway
5
+
6
+ API documentation for the Widgetic API Gateway
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing_extensions import Annotated
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class NewComposition(BaseModel):
27
+ """
28
+ NewComposition
29
+ """ # noqa: E501
30
+ name: StrictStr = Field(description="Name of the composition")
31
+ widget_id: StrictStr = Field(description="ID of the widget this composition is based on", alias="widgetId")
32
+ creator_id: Optional[StrictStr] = Field(default=None, description="ID of the user creating the composition", alias="creatorId")
33
+ content: Optional[Dict[str, Any]] = Field(default=None, description="Content data for the composition")
34
+ status: Optional[StrictStr] = Field(default='draft', description="Initial status of the composition")
35
+ embed_settings: Optional[Dict[str, Any]] = Field(default=None, description="Settings for embedding the composition", alias="embedSettings")
36
+ design: Optional[Dict[str, Any]] = Field(default=None, description="Design settings for the composition")
37
+ database_schema: Optional[Dict[str, Any]] = Field(default=None, description="The tables this composition keeps what visitors send it in (votes, ratings, answers). They are made when the composition is created, in a schema of their own that no other composition can reach: in Widgetic's database, or in your own Neon database when you have set one with `setPartnerDataDatabase`. They are deleted with the composition. The shape is `{ \"tables\": [ ... ] }`. A table has a `name`, a list of `columns` and, optionally, a list of `indexes`. A column has a `name` and a `type`, and optionally `primaryKey`, `notNull`, `unique` and `default`. An index has a `name` and the `columns` it covers (1 to 8), and optionally `unique`. Any other key is refused. - Names (tables, columns, indexes) use lower-case letters, digits and underscores, start with a letter and are at most 63 characters long. A name that starts with `_` or `pg_` is reserved. - `type` is one of `text`, `smallint`, `integer` (or `int`), `bigint`, `numeric`, `real`, `double precision`, `boolean` (or `bool`), `date`, `timestamp`, `timestamptz` (or `timestamp with time zone`), `uuid`, `json`, `jsonb`, `serial`, `bigserial`. - `default` is a number, `true` or `false`, a text of at most 500 characters (no backslash), a JSON value for a `json` or `jsonb` column, or one of `now()`, `current_timestamp` and `current_date` (date and timestamp columns) and `gen_random_uuid()` (a `uuid` column). A `serial` column numbers itself and has no default. - A composition declares at most 20 tables, with at most 64 columns and 10 indexes each. A declaration that cannot be used is refused with `400` and `INVALID_DATABASE_SCHEMA`; `error.details.problems` lists what to change. Tables that already exist are never changed or dropped: sending more tables later, when you update the composition, adds the ones that are missing. When the composition is saved but its tables cannot be made just now, the answer says so in `meta.warnings`: send the same `databaseSchema` again to retry. Leave it out and the composition gets the tables its widget declares in its own source (`src/lib/meta/database.json`), if any. Send `{ \"tables\": [] }` to give the composition no tables and keep it from getting its widget's. ", alias="databaseSchema")
38
+ project_id: Optional[StrictStr] = Field(default=None, description="ID of the project this composition belongs to", alias="projectId")
39
+ managed_user_id: Optional[StrictStr] = Field(default=None, description="Make the composition for one of your managed users, by Widgetic's id for the user. Send this or `managedUserExternalId`, not both. The managed user must be yours and active. The composition stays in your account; the tag lets you list one user's compositions and keeps it out of the others' lists. It is set here and does not change afterwards.", alias="managedUserId")
40
+ managed_user_external_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The same, by your own identifier for the user, the `externalId` you gave when you created the managed user (answers show it as `externalId`). Send this or `managedUserId`, not both.", alias="managedUserExternalId")
41
+ __properties: ClassVar[List[str]] = ["name", "widgetId", "creatorId", "content", "status", "embedSettings", "design", "databaseSchema", "projectId", "managedUserId", "managedUserExternalId"]
42
+
43
+ model_config = ConfigDict(
44
+ populate_by_name=True,
45
+ validate_assignment=True,
46
+ protected_namespaces=(),
47
+ )
48
+
49
+
50
+ def to_str(self) -> str:
51
+ """Returns the string representation of the model using alias"""
52
+ return pprint.pformat(self.model_dump(by_alias=True))
53
+
54
+ def to_json(self) -> str:
55
+ """Returns the JSON representation of the model using alias"""
56
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
57
+ return json.dumps(self.to_dict())
58
+
59
+ @classmethod
60
+ def from_json(cls, json_str: str) -> Optional[Self]:
61
+ """Create an instance of NewComposition from a JSON string"""
62
+ return cls.from_dict(json.loads(json_str))
63
+
64
+ def to_dict(self) -> Dict[str, Any]:
65
+ """Return the dictionary representation of the model using alias.
66
+
67
+ This has the following differences from calling pydantic's
68
+ `self.model_dump(by_alias=True)`:
69
+
70
+ * `None` is only added to the output dict for nullable fields that
71
+ were set at model initialization. Other fields with value `None`
72
+ are ignored.
73
+ """
74
+ excluded_fields: Set[str] = set([
75
+ ])
76
+
77
+ _dict = self.model_dump(
78
+ by_alias=True,
79
+ exclude=excluded_fields,
80
+ exclude_none=True,
81
+ )
82
+ return _dict
83
+
84
+ @classmethod
85
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
86
+ """Create an instance of NewComposition from a dict"""
87
+ if obj is None:
88
+ return None
89
+
90
+ if not isinstance(obj, dict):
91
+ return cls.model_validate(obj)
92
+
93
+ _obj = cls.model_validate({
94
+ "name": obj.get("name"),
95
+ "widgetId": obj.get("widgetId"),
96
+ "creatorId": obj.get("creatorId"),
97
+ "content": obj.get("content"),
98
+ "status": obj.get("status") if obj.get("status") is not None else 'draft',
99
+ "embedSettings": obj.get("embedSettings"),
100
+ "design": obj.get("design"),
101
+ "databaseSchema": obj.get("databaseSchema"),
102
+ "projectId": obj.get("projectId"),
103
+ "managedUserId": obj.get("managedUserId"),
104
+ "managedUserExternalId": obj.get("managedUserExternalId")
105
+ })
106
+ return _obj
107
+
108
+
@@ -0,0 +1,107 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Widgetic API Gateway
5
+
6
+ API documentation for the Widgetic API Gateway
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing_extensions import Annotated
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class NewEditorSession(BaseModel):
27
+ """
28
+ NewEditorSession
29
+ """ # noqa: E501
30
+ surfaces: Annotated[List[StrictStr], Field(min_length=1)] = Field(description="The pieces of Widgetic's editor the session may drive. `files` is the media library (the File Browser: upload a file, list the files uploaded for this user); what a user uploads is kept in your own storage destination. Partner storage is not optional: a session of any surface can be made only once you have set a destination up (`setPartnerStorageDestination`), and is refused with `409 PARTNER_STORAGE_REQUIRED` until then. `editor` is editing one of this user's compositions: read it, change its name, content, design and embed settings, read its schemas, and ask where to show it (`getCompositionPreview`: the widget's published page). `creator` is Widgetic's widget creator, with its drawing canvas and its AI: this user's canvases, the widgets on them and the conversation of each widget, the generation, build and publish calls that make a widget, and the compositions of those widgets (list, make). The surfaces do not imply one another: the whole creator also saves a composition (`editor`) and attaches pictures to its chat (`files`), so ask for `[\"creator\", \"editor\", \"files\"]`. ")
31
+ expires_in_seconds: Optional[Annotated[int, Field(le=14400, strict=True, ge=60)]] = Field(default=3600, description="How long the session lasts, in seconds. It cannot be extended; make a new session when it ends.", alias="expiresInSeconds")
32
+ allowed_origin: Optional[StrictStr] = Field(default=None, description="Bind the session to one web page origin, such as `https://app.example.com` (no path; `http` is accepted only for `localhost`). The session is then refused from any other origin, and from a request that carries no `Origin` header. Leave it out for a session that can be used from anywhere, which is what a server-side caller needs. ", alias="allowedOrigin")
33
+ max_credits: Optional[Annotated[int, Field(le=1000000, strict=True, ge=1)]] = Field(default=None, description="The most credits this session may spend on Widgetic's AI, one credit being one generation. Once the operations it ran have taken that many, the next one is refused (402, `EDITOR_SESSION_CREDIT_LIMIT_REACHED`) and the browser is only told that the feature is not available right now. A generation that fails is refunded and does not count. Leave it out to get the limit Widgetic has set for your account, if it has set one (it sets none unless you ask), and otherwise no limit of its own, which leaves the credits of your account as the only ceiling. Send `null` to ask for no limit of its own even when a default is set. ", alias="maxCredits")
34
+ __properties: ClassVar[List[str]] = ["surfaces", "expiresInSeconds", "allowedOrigin", "maxCredits"]
35
+
36
+ @field_validator('surfaces')
37
+ def surfaces_validate_enum(cls, value):
38
+ """Validates the enum"""
39
+ for i in value:
40
+ if i not in set(['files', 'editor', 'creator']):
41
+ raise ValueError("each list item must be one of ('files', 'editor', 'creator')")
42
+ return value
43
+
44
+ model_config = ConfigDict(
45
+ populate_by_name=True,
46
+ validate_assignment=True,
47
+ protected_namespaces=(),
48
+ )
49
+
50
+
51
+ def to_str(self) -> str:
52
+ """Returns the string representation of the model using alias"""
53
+ return pprint.pformat(self.model_dump(by_alias=True))
54
+
55
+ def to_json(self) -> str:
56
+ """Returns the JSON representation of the model using alias"""
57
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
58
+ return json.dumps(self.to_dict())
59
+
60
+ @classmethod
61
+ def from_json(cls, json_str: str) -> Optional[Self]:
62
+ """Create an instance of NewEditorSession from a JSON string"""
63
+ return cls.from_dict(json.loads(json_str))
64
+
65
+ def to_dict(self) -> Dict[str, Any]:
66
+ """Return the dictionary representation of the model using alias.
67
+
68
+ This has the following differences from calling pydantic's
69
+ `self.model_dump(by_alias=True)`:
70
+
71
+ * `None` is only added to the output dict for nullable fields that
72
+ were set at model initialization. Other fields with value `None`
73
+ are ignored.
74
+ """
75
+ excluded_fields: Set[str] = set([
76
+ ])
77
+
78
+ _dict = self.model_dump(
79
+ by_alias=True,
80
+ exclude=excluded_fields,
81
+ exclude_none=True,
82
+ )
83
+ # set to None if allowed_origin (nullable) is None
84
+ # and model_fields_set contains the field
85
+ if self.allowed_origin is None and "allowed_origin" in self.model_fields_set:
86
+ _dict['allowedOrigin'] = None
87
+
88
+ return _dict
89
+
90
+ @classmethod
91
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
92
+ """Create an instance of NewEditorSession from a dict"""
93
+ if obj is None:
94
+ return None
95
+
96
+ if not isinstance(obj, dict):
97
+ return cls.model_validate(obj)
98
+
99
+ _obj = cls.model_validate({
100
+ "surfaces": obj.get("surfaces"),
101
+ "expiresInSeconds": obj.get("expiresInSeconds") if obj.get("expiresInSeconds") is not None else 3600,
102
+ "allowedOrigin": obj.get("allowedOrigin"),
103
+ "maxCredits": obj.get("maxCredits")
104
+ })
105
+ return _obj
106
+
107
+
@@ -0,0 +1,91 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Widgetic API Gateway
5
+
6
+ API documentation for the Widgetic API Gateway
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class NewManagedUser(BaseModel):
26
+ """
27
+ NewManagedUser
28
+ """ # noqa: E501
29
+ external_id: StrictStr = Field(description="Your own identifier for the managed user. Must be unique among the managed users you manage (409 otherwise); another partner using the same value does not matter.", alias="externalId")
30
+ manager_id: Optional[StrictStr] = Field(default=None, description="ID of the user who will manage this managed user. Defaults to your own user ID; a partner can only use their own ID (403 otherwise), only an admin can name another manager.", alias="managerId")
31
+ metadata: Optional[Dict[str, Any]] = Field(default=None, description="Additional metadata for the managed user")
32
+ __properties: ClassVar[List[str]] = ["externalId", "managerId", "metadata"]
33
+
34
+ model_config = ConfigDict(
35
+ populate_by_name=True,
36
+ validate_assignment=True,
37
+ protected_namespaces=(),
38
+ )
39
+
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.model_dump(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of NewManagedUser from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ return _dict
74
+
75
+ @classmethod
76
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
77
+ """Create an instance of NewManagedUser from a dict"""
78
+ if obj is None:
79
+ return None
80
+
81
+ if not isinstance(obj, dict):
82
+ return cls.model_validate(obj)
83
+
84
+ _obj = cls.model_validate({
85
+ "externalId": obj.get("externalId"),
86
+ "managerId": obj.get("managerId"),
87
+ "metadata": obj.get("metadata")
88
+ })
89
+ return _obj
90
+
91
+
@@ -0,0 +1,118 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Widgetic API Gateway
5
+
6
+ API documentation for the Widgetic API Gateway
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing_extensions import Annotated
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class NewWidget(BaseModel):
27
+ """
28
+ What a new widget starts from. Only the fields listed here are used. The widget is created without code: it is a record with a name, a type and some starting content, on a canvas (a new one, unless you name one of yours). It has no database: what the visitors of a composition leave is kept in the tables of that composition.
29
+ """ # noqa: E501
30
+ name: Annotated[str, Field(min_length=1, strict=True)] = Field(description="Name of the widget.")
31
+ type: Annotated[str, Field(min_length=1, strict=True)] = Field(description="What kind of widget this is, as a label of your choosing (for example chart, form, gallery).")
32
+ content: Dict[str, Any] = Field(description="Starting content for the widget. An empty object is fine.")
33
+ is_public: Optional[StrictBool] = Field(default=False, description="Whether the widget is public.", alias="isPublic")
34
+ is_draft: Optional[StrictBool] = Field(default=True, description="Whether the widget starts as a draft. A widget created without this is a draft.", alias="isDraft")
35
+ canvas_id: Optional[StrictStr] = Field(default=None, description="Put the widget on this existing canvas instead of a new one. You must own the canvas.", alias="canvasId")
36
+ project_id: Optional[StrictStr] = Field(default=None, description="Project to file the widget in. You must be able to edit the project.", alias="projectId")
37
+ organization_id: Optional[StrictStr] = Field(default=None, description="Organization the widget belongs to. You must be a member who may create widgets there.", alias="organizationId")
38
+ workspace_type: Optional[StrictStr] = Field(default=None, description="Whether the widget lives in your personal workspace or in an organization's.", alias="workspaceType")
39
+ managed_user_id: Optional[StrictStr] = Field(default=None, description="Make the widget for one of your managed users, by Widgetic's id for the user. Send this or `managedUserExternalId`, not both. The managed user must be yours and active. The widget stays in your account; the tag lets you list one user's widgets and keeps it out of the others' lists. It is set here and does not change afterwards.", alias="managedUserId")
40
+ managed_user_external_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The same, by your own identifier for the user, the `externalId` you gave when you created the managed user (answers show it as `externalId`). Send this or `managedUserId`, not both.", alias="managedUserExternalId")
41
+ __properties: ClassVar[List[str]] = ["name", "type", "content", "isPublic", "isDraft", "canvasId", "projectId", "organizationId", "workspaceType", "managedUserId", "managedUserExternalId"]
42
+
43
+ @field_validator('workspace_type')
44
+ def workspace_type_validate_enum(cls, value):
45
+ """Validates the enum"""
46
+ if value is None:
47
+ return value
48
+
49
+ if value not in set(['personal', 'organization']):
50
+ raise ValueError("must be one of enum values ('personal', 'organization')")
51
+ return value
52
+
53
+ model_config = ConfigDict(
54
+ populate_by_name=True,
55
+ validate_assignment=True,
56
+ protected_namespaces=(),
57
+ )
58
+
59
+
60
+ def to_str(self) -> str:
61
+ """Returns the string representation of the model using alias"""
62
+ return pprint.pformat(self.model_dump(by_alias=True))
63
+
64
+ def to_json(self) -> str:
65
+ """Returns the JSON representation of the model using alias"""
66
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
67
+ return json.dumps(self.to_dict())
68
+
69
+ @classmethod
70
+ def from_json(cls, json_str: str) -> Optional[Self]:
71
+ """Create an instance of NewWidget from a JSON string"""
72
+ return cls.from_dict(json.loads(json_str))
73
+
74
+ def to_dict(self) -> Dict[str, Any]:
75
+ """Return the dictionary representation of the model using alias.
76
+
77
+ This has the following differences from calling pydantic's
78
+ `self.model_dump(by_alias=True)`:
79
+
80
+ * `None` is only added to the output dict for nullable fields that
81
+ were set at model initialization. Other fields with value `None`
82
+ are ignored.
83
+ """
84
+ excluded_fields: Set[str] = set([
85
+ ])
86
+
87
+ _dict = self.model_dump(
88
+ by_alias=True,
89
+ exclude=excluded_fields,
90
+ exclude_none=True,
91
+ )
92
+ return _dict
93
+
94
+ @classmethod
95
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
96
+ """Create an instance of NewWidget from a dict"""
97
+ if obj is None:
98
+ return None
99
+
100
+ if not isinstance(obj, dict):
101
+ return cls.model_validate(obj)
102
+
103
+ _obj = cls.model_validate({
104
+ "name": obj.get("name"),
105
+ "type": obj.get("type"),
106
+ "content": obj.get("content"),
107
+ "isPublic": obj.get("isPublic") if obj.get("isPublic") is not None else False,
108
+ "isDraft": obj.get("isDraft") if obj.get("isDraft") is not None else True,
109
+ "canvasId": obj.get("canvasId"),
110
+ "projectId": obj.get("projectId"),
111
+ "organizationId": obj.get("organizationId"),
112
+ "workspaceType": obj.get("workspaceType"),
113
+ "managedUserId": obj.get("managedUserId"),
114
+ "managedUserExternalId": obj.get("managedUserExternalId")
115
+ })
116
+ return _obj
117
+
118
+
@@ -0,0 +1,99 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Widgetic API Gateway
5
+
6
+ API documentation for the Widgetic API Gateway
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from api_sdk_py.models.operations_id_get_response_data import OperationsIdGetResponseData
23
+ from api_sdk_py.models.response_meta import ResponseMeta
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+
27
+ class OperationsIdGetResponse(BaseModel):
28
+ """
29
+ OperationsIdGetResponse
30
+ """ # noqa: E501
31
+ success: StrictBool = Field(description="Always `true` on a success.")
32
+ data: OperationsIdGetResponseData
33
+ meta: Optional[ResponseMeta] = None
34
+ __properties: ClassVar[List[str]] = ["success", "data", "meta"]
35
+
36
+ model_config = ConfigDict(
37
+ populate_by_name=True,
38
+ validate_assignment=True,
39
+ protected_namespaces=(),
40
+ )
41
+
42
+
43
+ def to_str(self) -> str:
44
+ """Returns the string representation of the model using alias"""
45
+ return pprint.pformat(self.model_dump(by_alias=True))
46
+
47
+ def to_json(self) -> str:
48
+ """Returns the JSON representation of the model using alias"""
49
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
50
+ return json.dumps(self.to_dict())
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> Optional[Self]:
54
+ """Create an instance of OperationsIdGetResponse from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self) -> Dict[str, Any]:
58
+ """Return the dictionary representation of the model using alias.
59
+
60
+ This has the following differences from calling pydantic's
61
+ `self.model_dump(by_alias=True)`:
62
+
63
+ * `None` is only added to the output dict for nullable fields that
64
+ were set at model initialization. Other fields with value `None`
65
+ are ignored.
66
+ """
67
+ excluded_fields: Set[str] = set([
68
+ ])
69
+
70
+ _dict = self.model_dump(
71
+ by_alias=True,
72
+ exclude=excluded_fields,
73
+ exclude_none=True,
74
+ )
75
+ # override the default output from pydantic by calling `to_dict()` of data
76
+ if self.data:
77
+ _dict['data'] = self.data.to_dict()
78
+ # override the default output from pydantic by calling `to_dict()` of meta
79
+ if self.meta:
80
+ _dict['meta'] = self.meta.to_dict()
81
+ return _dict
82
+
83
+ @classmethod
84
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
85
+ """Create an instance of OperationsIdGetResponse from a dict"""
86
+ if obj is None:
87
+ return None
88
+
89
+ if not isinstance(obj, dict):
90
+ return cls.model_validate(obj)
91
+
92
+ _obj = cls.model_validate({
93
+ "success": obj.get("success"),
94
+ "data": OperationsIdGetResponseData.from_dict(obj["data"]) if obj.get("data") is not None else None,
95
+ "meta": ResponseMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None
96
+ })
97
+ return _obj
98
+
99
+
@@ -0,0 +1,113 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Widgetic API Gateway
5
+
6
+ API documentation for the Widgetic API Gateway
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from datetime import datetime
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
+ from typing_extensions import Annotated
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+
27
+ class OperationsIdGetResponseData(BaseModel):
28
+ """
29
+ Operation payload including status, metadata, and timestamps.
30
+ """ # noqa: E501
31
+ id: Optional[StrictStr] = Field(default=None, description="The operation's identifier, the `operationId` the call that started it returned")
32
+ type: Optional[StrictStr] = Field(default=None, description="What the operation does")
33
+ status: Optional[StrictStr] = Field(default=None, description="Where the operation stands. `completed`, `failed` and `cancelled` are final")
34
+ progress: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field(default=None, description="How far the operation has got, in percent")
35
+ metadata: Optional[Dict[str, Any]] = Field(default=None, description="What the operation tells about its work. A finished composition duplication names the new composition in `newCompositionId`, and lists any problem with its database in `warnings` (absent when there is none). ")
36
+ error: Optional[StrictStr] = Field(default=None, description="Why a `failed` operation failed (absent otherwise)")
37
+ created_at: Optional[datetime] = Field(default=None, alias="createdAt")
38
+ updated_at: Optional[datetime] = Field(default=None, alias="updatedAt")
39
+ __properties: ClassVar[List[str]] = ["id", "type", "status", "progress", "metadata", "error", "createdAt", "updatedAt"]
40
+
41
+ @field_validator('status')
42
+ def status_validate_enum(cls, value):
43
+ """Validates the enum"""
44
+ if value is None:
45
+ return value
46
+
47
+ if value not in set(['pending', 'running', 'completed', 'failed', 'cancelled']):
48
+ raise ValueError("must be one of enum values ('pending', 'running', 'completed', 'failed', 'cancelled')")
49
+ return value
50
+
51
+ model_config = ConfigDict(
52
+ populate_by_name=True,
53
+ validate_assignment=True,
54
+ protected_namespaces=(),
55
+ )
56
+
57
+
58
+ def to_str(self) -> str:
59
+ """Returns the string representation of the model using alias"""
60
+ return pprint.pformat(self.model_dump(by_alias=True))
61
+
62
+ def to_json(self) -> str:
63
+ """Returns the JSON representation of the model using alias"""
64
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
65
+ return json.dumps(self.to_dict())
66
+
67
+ @classmethod
68
+ def from_json(cls, json_str: str) -> Optional[Self]:
69
+ """Create an instance of OperationsIdGetResponseData from a JSON string"""
70
+ return cls.from_dict(json.loads(json_str))
71
+
72
+ def to_dict(self) -> Dict[str, Any]:
73
+ """Return the dictionary representation of the model using alias.
74
+
75
+ This has the following differences from calling pydantic's
76
+ `self.model_dump(by_alias=True)`:
77
+
78
+ * `None` is only added to the output dict for nullable fields that
79
+ were set at model initialization. Other fields with value `None`
80
+ are ignored.
81
+ """
82
+ excluded_fields: Set[str] = set([
83
+ ])
84
+
85
+ _dict = self.model_dump(
86
+ by_alias=True,
87
+ exclude=excluded_fields,
88
+ exclude_none=True,
89
+ )
90
+ return _dict
91
+
92
+ @classmethod
93
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
94
+ """Create an instance of OperationsIdGetResponseData from a dict"""
95
+ if obj is None:
96
+ return None
97
+
98
+ if not isinstance(obj, dict):
99
+ return cls.model_validate(obj)
100
+
101
+ _obj = cls.model_validate({
102
+ "id": obj.get("id"),
103
+ "type": obj.get("type"),
104
+ "status": obj.get("status"),
105
+ "progress": obj.get("progress"),
106
+ "metadata": obj.get("metadata"),
107
+ "error": obj.get("error"),
108
+ "createdAt": obj.get("createdAt"),
109
+ "updatedAt": obj.get("updatedAt")
110
+ })
111
+ return _obj
112
+
113
+