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.
- api_sdk_py/__init__.py +312 -0
- api_sdk_py/api/__init__.py +18 -0
- api_sdk_py/api/canvases_api.py +1605 -0
- api_sdk_py/api/compositions_api.py +11616 -0
- api_sdk_py/api/credits_api.py +628 -0
- api_sdk_py/api/entitlements_api.py +676 -0
- api_sdk_py/api/invoices_api.py +357 -0
- api_sdk_py/api/managed_users_api.py +5087 -0
- api_sdk_py/api/operations_api.py +305 -0
- api_sdk_py/api/partner_api.py +41365 -0
- api_sdk_py/api/partners_api.py +11156 -0
- api_sdk_py/api/public_embed_api.py +1938 -0
- api_sdk_py/api/tokens_api.py +283 -0
- api_sdk_py/api/uploads_api.py +1507 -0
- api_sdk_py/api/users_api.py +3649 -0
- api_sdk_py/api/widgets_api.py +1300 -0
- api_sdk_py/api_client.py +797 -0
- api_sdk_py/api_response.py +21 -0
- api_sdk_py/configuration.py +526 -0
- api_sdk_py/exceptions.py +199 -0
- api_sdk_py/models/__init__.py +282 -0
- api_sdk_py/models/account_credit_balance.py +96 -0
- api_sdk_py/models/account_credit_balance_response.py +99 -0
- api_sdk_py/models/account_credit_transaction.py +120 -0
- api_sdk_py/models/adapter_connection.py +112 -0
- api_sdk_py/models/adapter_connection_removal.py +87 -0
- api_sdk_py/models/add_ai_answers_knowledge_document201_response.py +99 -0
- api_sdk_py/models/add_ai_answers_knowledge_document_request.py +90 -0
- api_sdk_py/models/add_domain_request.py +87 -0
- api_sdk_py/models/ai_answers_knowledge.py +101 -0
- api_sdk_py/models/ai_answers_knowledge_document.py +113 -0
- api_sdk_py/models/ai_answers_knowledge_removal.py +87 -0
- api_sdk_py/models/ai_answers_knowledge_totals.py +93 -0
- api_sdk_py/models/api_key_scope.py +44 -0
- api_sdk_py/models/canvas.py +112 -0
- api_sdk_py/models/canvas_response.py +99 -0
- api_sdk_py/models/check_composition_access_response.py +99 -0
- api_sdk_py/models/check_composition_access_response_data.py +89 -0
- api_sdk_py/models/composition.py +133 -0
- api_sdk_py/models/composition_data_source.py +90 -0
- api_sdk_py/models/composition_data_source_response.py +99 -0
- api_sdk_py/models/composition_entries_description.py +99 -0
- api_sdk_py/models/composition_entries_description_response.py +99 -0
- api_sdk_py/models/composition_entries_reading.py +126 -0
- api_sdk_py/models/composition_entries_reading_response.py +99 -0
- api_sdk_py/models/composition_entry_aggregate_tally.py +122 -0
- api_sdk_py/models/composition_entry_aggregates_block.py +99 -0
- api_sdk_py/models/composition_entry_column.py +89 -0
- api_sdk_py/models/composition_entry_delete_success.py +93 -0
- api_sdk_py/models/composition_entry_delete_success_data.py +87 -0
- api_sdk_py/models/composition_entry_item.py +111 -0
- api_sdk_py/models/composition_entry_items_meta.py +106 -0
- api_sdk_py/models/composition_entry_items_page_success.py +103 -0
- api_sdk_py/models/composition_entry_table.py +105 -0
- api_sdk_py/models/composition_entry_tally.py +95 -0
- api_sdk_py/models/composition_response.py +99 -0
- api_sdk_py/models/composition_version.py +96 -0
- api_sdk_py/models/content_check_finding.py +93 -0
- api_sdk_py/models/content_item_write_result.py +101 -0
- api_sdk_py/models/content_item_write_result_validation_result.py +91 -0
- api_sdk_py/models/copy_partner_preset_request.py +88 -0
- api_sdk_py/models/create_canvas_request.py +118 -0
- api_sdk_py/models/create_composition_content_item201_response.py +99 -0
- api_sdk_py/models/create_composition_content_item_request.py +101 -0
- api_sdk_py/models/create_composition_database_record201_response.py +95 -0
- api_sdk_py/models/create_composition_from_preset_request.py +100 -0
- api_sdk_py/models/create_composition_from_widget201_response.py +99 -0
- api_sdk_py/models/create_composition_from_widget_request.py +102 -0
- api_sdk_py/models/create_user_api_key_request.py +106 -0
- api_sdk_py/models/create_widget201_response.py +99 -0
- api_sdk_py/models/create_widget201_response_data.py +207 -0
- api_sdk_py/models/created_user_api_key.py +117 -0
- api_sdk_py/models/created_user_api_key_response.py +99 -0
- api_sdk_py/models/delete_composition_content_item_response.py +99 -0
- api_sdk_py/models/delete_composition_content_item_response_data.py +89 -0
- api_sdk_py/models/delete_composition_data_source_response.py +99 -0
- api_sdk_py/models/delete_composition_data_source_response_data.py +87 -0
- api_sdk_py/models/delete_managed_user200_response.py +99 -0
- api_sdk_py/models/delete_personal_workspace_domain_response.py +99 -0
- api_sdk_py/models/delete_personal_workspace_domain_response_data.py +87 -0
- api_sdk_py/models/delete_user_api_key_response.py +99 -0
- api_sdk_py/models/delete_user_api_key_response_data.py +87 -0
- api_sdk_py/models/design_defaults.py +92 -0
- api_sdk_py/models/duplicate_composition202_response.py +99 -0
- api_sdk_py/models/duplicate_composition202_response_data.py +87 -0
- api_sdk_py/models/duplicate_composition_request.py +89 -0
- api_sdk_py/models/editor_session.py +122 -0
- api_sdk_py/models/editor_session_response.py +99 -0
- api_sdk_py/models/entitlement.py +118 -0
- api_sdk_py/models/error_detail.py +104 -0
- api_sdk_py/models/error_response.py +108 -0
- api_sdk_py/models/export_composition_entry_items200_response.py +103 -0
- api_sdk_py/models/export_composition_entry_items200_response_meta.py +89 -0
- api_sdk_py/models/get_ai_answers_knowledge200_response.py +99 -0
- api_sdk_py/models/get_all_canvases_response.py +99 -0
- api_sdk_py/models/get_all_canvases_response_data.py +101 -0
- api_sdk_py/models/get_all_compositions200_response.py +103 -0
- api_sdk_py/models/get_all_managed_users200_response.py +103 -0
- api_sdk_py/models/get_composition_content_response.py +95 -0
- api_sdk_py/models/get_composition_content_schema_response.py +99 -0
- api_sdk_py/models/get_composition_content_schema_response_data.py +97 -0
- api_sdk_py/models/get_composition_data_source_response.py +104 -0
- api_sdk_py/models/get_composition_database_records200_response.py +95 -0
- api_sdk_py/models/get_composition_design_response.py +95 -0
- api_sdk_py/models/get_composition_design_schema_response.py +99 -0
- api_sdk_py/models/get_composition_design_schema_response_data.py +97 -0
- api_sdk_py/models/get_composition_embed_schema_response.py +99 -0
- api_sdk_py/models/get_composition_embed_schema_response_data.py +107 -0
- api_sdk_py/models/get_composition_embed_settings_response.py +95 -0
- api_sdk_py/models/get_composition_preview_response.py +99 -0
- api_sdk_py/models/get_composition_preview_response_data.py +93 -0
- api_sdk_py/models/get_composition_versions200_response.py +103 -0
- api_sdk_py/models/get_compositions_batch_request.py +88 -0
- api_sdk_py/models/get_compositions_batch_response.py +99 -0
- api_sdk_py/models/get_compositions_batch_response_data.py +105 -0
- api_sdk_py/models/get_invoices_by_partner_id200_response.py +103 -0
- api_sdk_py/models/get_managed_user_entitlements_response.py +99 -0
- api_sdk_py/models/get_managed_user_entitlements_response_data.py +97 -0
- api_sdk_py/models/get_managed_user_limits200_response.py +99 -0
- api_sdk_py/models/get_managed_user_storage_usage200_response.py +99 -0
- api_sdk_py/models/get_managed_user_storage_usage200_response_data.py +95 -0
- api_sdk_py/models/get_managed_user_storage_usage200_response_data_by_purpose.py +106 -0
- api_sdk_py/models/get_managed_users_by_manager_id_response.py +99 -0
- api_sdk_py/models/get_managed_users_by_manager_id_response_data.py +101 -0
- api_sdk_py/models/get_partner_billing_overview200_response.py +99 -0
- api_sdk_py/models/get_partner_credit_transactions200_response.py +103 -0
- api_sdk_py/models/get_partner_design_defaults200_response.py +99 -0
- api_sdk_py/models/get_partner_entitlements_response.py +99 -0
- api_sdk_py/models/get_partner_entitlements_response_data.py +97 -0
- api_sdk_py/models/get_personal_workspace_domains200_response.py +103 -0
- api_sdk_py/models/get_public_composition_embed200_response.py +133 -0
- api_sdk_py/models/get_public_composition_embed200_response_data_source.py +89 -0
- api_sdk_py/models/get_public_composition_embed200_response_direct.py +96 -0
- api_sdk_py/models/get_user_adapter_connections200_response.py +103 -0
- api_sdk_py/models/get_user_api_key_usage_logs_response.py +99 -0
- api_sdk_py/models/get_user_api_key_usage_logs_response_data.py +95 -0
- api_sdk_py/models/get_user_api_keys200_response.py +103 -0
- api_sdk_py/models/get_widgets200_response.py +103 -0
- api_sdk_py/models/get_widgets_batch_request.py +87 -0
- api_sdk_py/models/get_widgets_batch_response.py +99 -0
- api_sdk_py/models/get_widgets_batch_response_data.py +105 -0
- api_sdk_py/models/get_widgets_batch_response_data_errors_inner.py +89 -0
- api_sdk_py/models/list_partner_presets200_response.py +103 -0
- api_sdk_py/models/managed_user.py +105 -0
- api_sdk_py/models/managed_user_entries_meta.py +100 -0
- api_sdk_py/models/managed_user_entries_page_success.py +103 -0
- api_sdk_py/models/managed_user_entry_item.py +115 -0
- api_sdk_py/models/managed_user_limits.py +104 -0
- api_sdk_py/models/managed_user_operation_usage.py +95 -0
- api_sdk_py/models/managed_user_removal.py +89 -0
- api_sdk_py/models/managed_user_response.py +99 -0
- api_sdk_py/models/managed_user_usage.py +110 -0
- api_sdk_py/models/managed_user_usage_response.py +99 -0
- api_sdk_py/models/managed_user_usage_totals.py +93 -0
- api_sdk_py/models/my_partner.py +136 -0
- api_sdk_py/models/my_partners.py +112 -0
- api_sdk_py/models/my_partners_response.py +99 -0
- api_sdk_py/models/new_composition.py +108 -0
- api_sdk_py/models/new_editor_session.py +107 -0
- api_sdk_py/models/new_managed_user.py +91 -0
- api_sdk_py/models/new_widget.py +118 -0
- api_sdk_py/models/operations_id_get_response.py +99 -0
- api_sdk_py/models/operations_id_get_response_data.py +113 -0
- api_sdk_py/models/partner_analytics_by_managed_user.py +109 -0
- api_sdk_py/models/partner_analytics_by_managed_user_response.py +99 -0
- api_sdk_py/models/partner_analytics_of_day.py +94 -0
- api_sdk_py/models/partner_analytics_of_managed_user.py +126 -0
- api_sdk_py/models/partner_analytics_of_widget.py +102 -0
- api_sdk_py/models/partner_analytics_summary.py +110 -0
- api_sdk_py/models/partner_analytics_summary_response.py +99 -0
- api_sdk_py/models/partner_analytics_timeline.py +110 -0
- api_sdk_py/models/partner_analytics_timeline_response.py +99 -0
- api_sdk_py/models/partner_analytics_top_widgets.py +110 -0
- api_sdk_py/models/partner_analytics_top_widgets_response.py +99 -0
- api_sdk_py/models/partner_billing_overview.py +114 -0
- api_sdk_py/models/partner_billing_overview_billing_integration.py +100 -0
- api_sdk_py/models/partner_billing_overview_operational_credits.py +101 -0
- api_sdk_py/models/partner_billing_overview_partner.py +100 -0
- api_sdk_py/models/partner_contract.py +158 -0
- api_sdk_py/models/partner_contract_response.py +99 -0
- api_sdk_py/models/partner_customization.py +140 -0
- api_sdk_py/models/partner_data_database.py +112 -0
- api_sdk_py/models/partner_data_database_removal.py +87 -0
- api_sdk_py/models/partner_data_database_removal_response.py +99 -0
- api_sdk_py/models/partner_data_database_response.py +99 -0
- api_sdk_py/models/partner_entry_context_secret.py +93 -0
- api_sdk_py/models/partner_entry_context_secret_response.py +99 -0
- api_sdk_py/models/partner_entry_context_signing.py +108 -0
- api_sdk_py/models/partner_entry_context_signing_response.py +99 -0
- api_sdk_py/models/partner_extra_credits_invoice.py +130 -0
- api_sdk_py/models/partner_extra_credits_invoice_response.py +99 -0
- api_sdk_py/models/partner_invoice.py +234 -0
- api_sdk_py/models/partner_notification.py +108 -0
- api_sdk_py/models/partner_notification_default_recipients.py +89 -0
- api_sdk_py/models/partner_notification_delivery.py +170 -0
- api_sdk_py/models/partner_notification_delivery_log.py +95 -0
- api_sdk_py/models/partner_notification_delivery_log_response.py +99 -0
- api_sdk_py/models/partner_notification_delivery_response.py +99 -0
- api_sdk_py/models/partner_notification_event.py +112 -0
- api_sdk_py/models/partner_notification_event_type.py +51 -0
- api_sdk_py/models/partner_notification_page.py +103 -0
- api_sdk_py/models/partner_notification_page_response.py +99 -0
- api_sdk_py/models/partner_notification_settings.py +139 -0
- api_sdk_py/models/partner_notification_settings_change.py +98 -0
- api_sdk_py/models/partner_notification_settings_change_response.py +99 -0
- api_sdk_py/models/partner_notification_settings_response.py +99 -0
- api_sdk_py/models/partner_notification_test_event_request.py +88 -0
- api_sdk_py/models/partner_notification_test_event_result.py +98 -0
- api_sdk_py/models/partner_notification_test_event_result_response.py +99 -0
- api_sdk_py/models/partner_preset.py +119 -0
- api_sdk_py/models/partner_preset_copy.py +97 -0
- api_sdk_py/models/partner_preset_copy_response.py +99 -0
- api_sdk_py/models/partner_preset_removal.py +87 -0
- api_sdk_py/models/partner_preset_removal_response.py +99 -0
- api_sdk_py/models/partner_preset_response.py +99 -0
- api_sdk_py/models/partner_report_page.py +91 -0
- api_sdk_py/models/partner_report_period.py +90 -0
- api_sdk_py/models/partner_storage_destination.py +120 -0
- api_sdk_py/models/partner_storage_destination_response.py +99 -0
- api_sdk_py/models/partner_storage_removal.py +87 -0
- api_sdk_py/models/partner_storage_removal_response.py +99 -0
- api_sdk_py/models/partner_storage_usage.py +109 -0
- api_sdk_py/models/partner_storage_usage_of_managed_user.py +129 -0
- api_sdk_py/models/partner_storage_usage_response.py +99 -0
- api_sdk_py/models/partner_storage_usage_totals.py +93 -0
- api_sdk_py/models/personal_workspace_domain.py +96 -0
- api_sdk_py/models/personal_workspace_domain_result.py +93 -0
- api_sdk_py/models/personal_workspace_domain_result_response.py +99 -0
- api_sdk_py/models/post_public_composition_embed_status200_response.py +99 -0
- api_sdk_py/models/post_public_composition_embed_status200_response_data.py +97 -0
- api_sdk_py/models/post_public_composition_embed_status_request.py +88 -0
- api_sdk_py/models/public_adapter_call_error.py +93 -0
- api_sdk_py/models/public_adapter_call_request.py +113 -0
- api_sdk_py/models/public_adapter_call_result.py +93 -0
- api_sdk_py/models/public_adapter_call_result_data.py +87 -0
- api_sdk_py/models/public_adapter_file_result.py +93 -0
- api_sdk_py/models/public_adapter_file_result_data.py +91 -0
- api_sdk_py/models/public_adapter_file_result_data_file.py +108 -0
- api_sdk_py/models/public_composition_entry_created.py +93 -0
- api_sdk_py/models/public_composition_entry_created_data.py +92 -0
- api_sdk_py/models/public_composition_entry_request.py +101 -0
- api_sdk_py/models/public_embed_failure.py +105 -0
- api_sdk_py/models/public_embed_failure_details.py +112 -0
- api_sdk_py/models/public_embed_failure_error.py +98 -0
- api_sdk_py/models/purpose_storage_bucket.py +89 -0
- api_sdk_py/models/remove_ai_answers_knowledge_document200_response.py +99 -0
- api_sdk_py/models/remove_user_adapter_connection200_response.py +99 -0
- api_sdk_py/models/request_extra_credits.py +88 -0
- api_sdk_py/models/response_meta.py +121 -0
- api_sdk_py/models/revoke_managed_user_editor_sessions_response.py +99 -0
- api_sdk_py/models/revoke_managed_user_editor_sessions_response_data.py +87 -0
- api_sdk_py/models/set_adapter_connection_request.py +88 -0
- api_sdk_py/models/set_composition_data_source_request.py +90 -0
- api_sdk_py/models/set_dynamic_content_request.py +95 -0
- api_sdk_py/models/set_dynamic_content_response.py +99 -0
- api_sdk_py/models/set_dynamic_content_response_data.py +99 -0
- api_sdk_py/models/set_dynamic_content_response_data_validation_result.py +91 -0
- api_sdk_py/models/set_managed_user_limits_request.py +93 -0
- api_sdk_py/models/set_partner_data_database_request.py +87 -0
- api_sdk_py/models/set_partner_design_defaults_request.py +92 -0
- api_sdk_py/models/set_partner_preset_request.py +104 -0
- api_sdk_py/models/set_partner_storage_destination_request.py +101 -0
- api_sdk_py/models/set_user_adapter_connection200_response.py +99 -0
- api_sdk_py/models/success_response.py +95 -0
- api_sdk_py/models/update_canvas_request.py +96 -0
- api_sdk_py/models/update_composition.py +101 -0
- api_sdk_py/models/update_composition_status_request.py +94 -0
- api_sdk_py/models/update_domain_request.py +87 -0
- api_sdk_py/models/update_managed_user.py +91 -0
- api_sdk_py/models/update_partner_entry_context_signing_request.py +87 -0
- api_sdk_py/models/update_partner_notification_settings_request.py +110 -0
- api_sdk_py/models/update_user_api_key_request.py +90 -0
- api_sdk_py/models/upload.py +167 -0
- api_sdk_py/models/upload_limits.py +97 -0
- api_sdk_py/models/upload_limits_response.py +99 -0
- api_sdk_py/models/upload_response.py +99 -0
- api_sdk_py/models/uploads_get200_response.py +103 -0
- api_sdk_py/models/uploads_id_delete200_response.py +99 -0
- api_sdk_py/models/uploads_id_delete200_response_data.py +87 -0
- api_sdk_py/models/user_api_key.py +122 -0
- api_sdk_py/models/user_api_key_response.py +99 -0
- api_sdk_py/models/user_api_key_usage_log.py +107 -0
- api_sdk_py/models/validate_composition_content_response.py +99 -0
- api_sdk_py/models/validate_composition_content_response_data.py +108 -0
- api_sdk_py/models/validate_token200_response.py +99 -0
- api_sdk_py/models/validate_token200_response_data.py +106 -0
- api_sdk_py/models/widget.py +205 -0
- api_sdk_py/py.typed +0 -0
- api_sdk_py/rest.py +257 -0
- api_sdk_py-1.11.66.dist-info/METADATA +28 -0
- api_sdk_py-1.11.66.dist-info/RECORD +294 -0
- api_sdk_py-1.11.66.dist-info/WHEEL +5 -0
- api_sdk_py-1.11.66.dist-info/licenses/LICENSE +122 -0
- api_sdk_py-1.11.66.dist-info/top_level.txt +1 -0
|
@@ -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, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List
|
|
22
|
+
from api_sdk_py.models.composition_entry_table import CompositionEntryTable
|
|
23
|
+
from typing import Optional, Set
|
|
24
|
+
from typing_extensions import Self
|
|
25
|
+
|
|
26
|
+
class CompositionEntriesDescription(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
CompositionEntriesDescription
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
composition_id: StrictStr = Field(description="The composition whose entries these are", alias="compositionId")
|
|
31
|
+
has_data: StrictBool = Field(description="False when the composition keeps no entries of its own: its widget only shows content (it has no database), or nothing was set up in the database yet. That is not an error. ", alias="hasData")
|
|
32
|
+
tables: List[CompositionEntryTable] = Field(description="The tables entries are kept in (up to 20)")
|
|
33
|
+
__properties: ClassVar[List[str]] = ["compositionId", "hasData", "tables"]
|
|
34
|
+
|
|
35
|
+
model_config = ConfigDict(
|
|
36
|
+
populate_by_name=True,
|
|
37
|
+
validate_assignment=True,
|
|
38
|
+
protected_namespaces=(),
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def to_str(self) -> str:
|
|
43
|
+
"""Returns the string representation of the model using alias"""
|
|
44
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
45
|
+
|
|
46
|
+
def to_json(self) -> str:
|
|
47
|
+
"""Returns the JSON representation of the model using alias"""
|
|
48
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
49
|
+
return json.dumps(self.to_dict())
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
53
|
+
"""Create an instance of CompositionEntriesDescription from a JSON string"""
|
|
54
|
+
return cls.from_dict(json.loads(json_str))
|
|
55
|
+
|
|
56
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
57
|
+
"""Return the dictionary representation of the model using alias.
|
|
58
|
+
|
|
59
|
+
This has the following differences from calling pydantic's
|
|
60
|
+
`self.model_dump(by_alias=True)`:
|
|
61
|
+
|
|
62
|
+
* `None` is only added to the output dict for nullable fields that
|
|
63
|
+
were set at model initialization. Other fields with value `None`
|
|
64
|
+
are ignored.
|
|
65
|
+
"""
|
|
66
|
+
excluded_fields: Set[str] = set([
|
|
67
|
+
])
|
|
68
|
+
|
|
69
|
+
_dict = self.model_dump(
|
|
70
|
+
by_alias=True,
|
|
71
|
+
exclude=excluded_fields,
|
|
72
|
+
exclude_none=True,
|
|
73
|
+
)
|
|
74
|
+
# override the default output from pydantic by calling `to_dict()` of each item in tables (list)
|
|
75
|
+
_items = []
|
|
76
|
+
if self.tables:
|
|
77
|
+
for _item_tables in self.tables:
|
|
78
|
+
if _item_tables:
|
|
79
|
+
_items.append(_item_tables.to_dict())
|
|
80
|
+
_dict['tables'] = _items
|
|
81
|
+
return _dict
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
85
|
+
"""Create an instance of CompositionEntriesDescription 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
|
+
"compositionId": obj.get("compositionId"),
|
|
94
|
+
"hasData": obj.get("hasData"),
|
|
95
|
+
"tables": [CompositionEntryTable.from_dict(_item) for _item in obj["tables"]] if obj.get("tables") is not None else None
|
|
96
|
+
})
|
|
97
|
+
return _obj
|
|
98
|
+
|
|
99
|
+
|
|
@@ -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.composition_entries_description import CompositionEntriesDescription
|
|
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 CompositionEntriesDescriptionResponse(BaseModel):
|
|
28
|
+
"""
|
|
29
|
+
CompositionEntriesDescriptionResponse
|
|
30
|
+
""" # noqa: E501
|
|
31
|
+
success: StrictBool = Field(description="Always `true` on a success.")
|
|
32
|
+
data: CompositionEntriesDescription
|
|
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 CompositionEntriesDescriptionResponse 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 CompositionEntriesDescriptionResponse 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": CompositionEntriesDescription.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,126 @@
|
|
|
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
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
|
+
from typing_extensions import Annotated
|
|
23
|
+
from api_sdk_py.models.composition_entry_aggregates_block import CompositionEntryAggregatesBlock
|
|
24
|
+
from api_sdk_py.models.composition_entry_tally import CompositionEntryTally
|
|
25
|
+
from typing import Optional, Set
|
|
26
|
+
from typing_extensions import Self
|
|
27
|
+
|
|
28
|
+
class CompositionEntriesReading(BaseModel):
|
|
29
|
+
"""
|
|
30
|
+
CompositionEntriesReading
|
|
31
|
+
""" # noqa: E501
|
|
32
|
+
composition_id: StrictStr = Field(description="The composition whose entries these are", alias="compositionId")
|
|
33
|
+
table: StrictStr = Field(description="The table that was read")
|
|
34
|
+
total_rows: Annotated[int, Field(strict=True, ge=0)] = Field(description="How many entries the table holds in all. Not narrowed by `since`, `until` or a filter: only `aggregates` is. ", alias="totalRows")
|
|
35
|
+
tallies: Optional[List[CompositionEntryTally]] = Field(description="How many entries have each value of the `groupBy` column, largest group first (up to 20 groups), over the whole table. `null` when no `groupBy` was asked for. For the groups of a selection (a time window, a `context` filter) or for more than 20 groups, ask for `aggregate`: `aggregates.tallies` holds up to 200 groups. ")
|
|
36
|
+
more_groups: StrictBool = Field(description="True when the `groupBy` column has more than the 20 groups `tallies` lists. It speaks of `tallies` only: `aggregates.truncated` is the same signal for `aggregates` (200 groups). ", alias="moreGroups")
|
|
37
|
+
columns: List[StrictStr] = Field(description="The name of each value of an entry in `rows`, in order, exactly as the database spells it (and as `describeCompositionEntries` lists it: `created_at` stays `created_at`). Empty when no entries were asked for, or the table has none. ")
|
|
38
|
+
rows: Optional[List[List[Any]]] = Field(description="The newest entries, newest first (up to 25). `null` when no entries were asked for. Each entry is a list of values in the order of `columns`. A value is text (cut to 200 characters), a number, a boolean or `null`. ")
|
|
39
|
+
more_rows: StrictBool = Field(description="True when the table holds more entries than `rows` lists", alias="moreRows")
|
|
40
|
+
aggregates: Optional[CompositionEntryAggregatesBlock] = Field(default=None, description="Only present when the read asked for `aggregate`. Unlike `totalRows`, `tallies` and `rows`, it is narrowed by `since`, `until` and the `context` and column filters of the same call: it answers \"the average rating this week\" where `tallies` answer \"how many of each rating, ever\". ")
|
|
41
|
+
__properties: ClassVar[List[str]] = ["compositionId", "table", "totalRows", "tallies", "moreGroups", "columns", "rows", "moreRows", "aggregates"]
|
|
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 CompositionEntriesReading 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
|
+
# override the default output from pydantic by calling `to_dict()` of each item in tallies (list)
|
|
83
|
+
_items = []
|
|
84
|
+
if self.tallies:
|
|
85
|
+
for _item_tallies in self.tallies:
|
|
86
|
+
if _item_tallies:
|
|
87
|
+
_items.append(_item_tallies.to_dict())
|
|
88
|
+
_dict['tallies'] = _items
|
|
89
|
+
# override the default output from pydantic by calling `to_dict()` of aggregates
|
|
90
|
+
if self.aggregates:
|
|
91
|
+
_dict['aggregates'] = self.aggregates.to_dict()
|
|
92
|
+
# set to None if tallies (nullable) is None
|
|
93
|
+
# and model_fields_set contains the field
|
|
94
|
+
if self.tallies is None and "tallies" in self.model_fields_set:
|
|
95
|
+
_dict['tallies'] = None
|
|
96
|
+
|
|
97
|
+
# set to None if rows (nullable) is None
|
|
98
|
+
# and model_fields_set contains the field
|
|
99
|
+
if self.rows is None and "rows" in self.model_fields_set:
|
|
100
|
+
_dict['rows'] = None
|
|
101
|
+
|
|
102
|
+
return _dict
|
|
103
|
+
|
|
104
|
+
@classmethod
|
|
105
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
106
|
+
"""Create an instance of CompositionEntriesReading from a dict"""
|
|
107
|
+
if obj is None:
|
|
108
|
+
return None
|
|
109
|
+
|
|
110
|
+
if not isinstance(obj, dict):
|
|
111
|
+
return cls.model_validate(obj)
|
|
112
|
+
|
|
113
|
+
_obj = cls.model_validate({
|
|
114
|
+
"compositionId": obj.get("compositionId"),
|
|
115
|
+
"table": obj.get("table"),
|
|
116
|
+
"totalRows": obj.get("totalRows"),
|
|
117
|
+
"tallies": [CompositionEntryTally.from_dict(_item) for _item in obj["tallies"]] if obj.get("tallies") is not None else None,
|
|
118
|
+
"moreGroups": obj.get("moreGroups"),
|
|
119
|
+
"columns": obj.get("columns"),
|
|
120
|
+
"rows": obj.get("rows"),
|
|
121
|
+
"moreRows": obj.get("moreRows"),
|
|
122
|
+
"aggregates": CompositionEntryAggregatesBlock.from_dict(obj["aggregates"]) if obj.get("aggregates") is not None else None
|
|
123
|
+
})
|
|
124
|
+
return _obj
|
|
125
|
+
|
|
126
|
+
|
|
@@ -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.composition_entries_reading import CompositionEntriesReading
|
|
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 CompositionEntriesReadingResponse(BaseModel):
|
|
28
|
+
"""
|
|
29
|
+
CompositionEntriesReadingResponse
|
|
30
|
+
""" # noqa: E501
|
|
31
|
+
success: StrictBool = Field(description="Always `true` on a success.")
|
|
32
|
+
data: CompositionEntriesReading
|
|
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 CompositionEntriesReadingResponse 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 CompositionEntriesReadingResponse 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": CompositionEntriesReading.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,122 @@
|
|
|
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, StrictFloat, StrictInt, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional, Union
|
|
22
|
+
from typing import Optional, Set
|
|
23
|
+
from typing_extensions import Self
|
|
24
|
+
|
|
25
|
+
class CompositionEntryAggregateTally(BaseModel):
|
|
26
|
+
"""
|
|
27
|
+
The aggregates of one group (the entries that share a value of the `groupBy` column), or of the whole selection when no `groupBy` was asked for. Only the functions that were asked for with `aggregate` are present.
|
|
28
|
+
""" # noqa: E501
|
|
29
|
+
group: Optional[StrictStr] = Field(default=None, description="The value of the `groupBy` column, as text (a number is `\"5\"`); `null` groups the entries that left it empty. Absent when no `groupBy` was asked for. ")
|
|
30
|
+
count: Optional[StrictInt] = Field(default=None, description="How many entries are in the group (or in the selection)")
|
|
31
|
+
avg: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The average of the numeric `column`, rounded to 4 decimals. `null` when no entry matched: there is no average of nothing, and it is not 0. ")
|
|
32
|
+
min: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The smallest value of the numeric `column`. `null` when no entry matched.")
|
|
33
|
+
max: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The largest value of the numeric `column`. `null` when no entry matched.")
|
|
34
|
+
sum: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The sum of the numeric `column`. `null` when no entry matched.")
|
|
35
|
+
__properties: ClassVar[List[str]] = ["group", "count", "avg", "min", "max", "sum"]
|
|
36
|
+
|
|
37
|
+
model_config = ConfigDict(
|
|
38
|
+
populate_by_name=True,
|
|
39
|
+
validate_assignment=True,
|
|
40
|
+
protected_namespaces=(),
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def to_str(self) -> str:
|
|
45
|
+
"""Returns the string representation of the model using alias"""
|
|
46
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
47
|
+
|
|
48
|
+
def to_json(self) -> str:
|
|
49
|
+
"""Returns the JSON representation of the model using alias"""
|
|
50
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
51
|
+
return json.dumps(self.to_dict())
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
55
|
+
"""Create an instance of CompositionEntryAggregateTally from a JSON string"""
|
|
56
|
+
return cls.from_dict(json.loads(json_str))
|
|
57
|
+
|
|
58
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
59
|
+
"""Return the dictionary representation of the model using alias.
|
|
60
|
+
|
|
61
|
+
This has the following differences from calling pydantic's
|
|
62
|
+
`self.model_dump(by_alias=True)`:
|
|
63
|
+
|
|
64
|
+
* `None` is only added to the output dict for nullable fields that
|
|
65
|
+
were set at model initialization. Other fields with value `None`
|
|
66
|
+
are ignored.
|
|
67
|
+
"""
|
|
68
|
+
excluded_fields: Set[str] = set([
|
|
69
|
+
])
|
|
70
|
+
|
|
71
|
+
_dict = self.model_dump(
|
|
72
|
+
by_alias=True,
|
|
73
|
+
exclude=excluded_fields,
|
|
74
|
+
exclude_none=True,
|
|
75
|
+
)
|
|
76
|
+
# set to None if group (nullable) is None
|
|
77
|
+
# and model_fields_set contains the field
|
|
78
|
+
if self.group is None and "group" in self.model_fields_set:
|
|
79
|
+
_dict['group'] = None
|
|
80
|
+
|
|
81
|
+
# set to None if avg (nullable) is None
|
|
82
|
+
# and model_fields_set contains the field
|
|
83
|
+
if self.avg is None and "avg" in self.model_fields_set:
|
|
84
|
+
_dict['avg'] = None
|
|
85
|
+
|
|
86
|
+
# set to None if min (nullable) is None
|
|
87
|
+
# and model_fields_set contains the field
|
|
88
|
+
if self.min is None and "min" in self.model_fields_set:
|
|
89
|
+
_dict['min'] = None
|
|
90
|
+
|
|
91
|
+
# set to None if max (nullable) is None
|
|
92
|
+
# and model_fields_set contains the field
|
|
93
|
+
if self.max is None and "max" in self.model_fields_set:
|
|
94
|
+
_dict['max'] = None
|
|
95
|
+
|
|
96
|
+
# set to None if sum (nullable) is None
|
|
97
|
+
# and model_fields_set contains the field
|
|
98
|
+
if self.sum is None and "sum" in self.model_fields_set:
|
|
99
|
+
_dict['sum'] = None
|
|
100
|
+
|
|
101
|
+
return _dict
|
|
102
|
+
|
|
103
|
+
@classmethod
|
|
104
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
105
|
+
"""Create an instance of CompositionEntryAggregateTally from a dict"""
|
|
106
|
+
if obj is None:
|
|
107
|
+
return None
|
|
108
|
+
|
|
109
|
+
if not isinstance(obj, dict):
|
|
110
|
+
return cls.model_validate(obj)
|
|
111
|
+
|
|
112
|
+
_obj = cls.model_validate({
|
|
113
|
+
"group": obj.get("group"),
|
|
114
|
+
"count": obj.get("count"),
|
|
115
|
+
"avg": obj.get("avg"),
|
|
116
|
+
"min": obj.get("min"),
|
|
117
|
+
"max": obj.get("max"),
|
|
118
|
+
"sum": obj.get("sum")
|
|
119
|
+
})
|
|
120
|
+
return _obj
|
|
121
|
+
|
|
122
|
+
|
|
@@ -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, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
|
+
from api_sdk_py.models.composition_entry_aggregate_tally import CompositionEntryAggregateTally
|
|
23
|
+
from typing import Optional, Set
|
|
24
|
+
from typing_extensions import Self
|
|
25
|
+
|
|
26
|
+
class CompositionEntryAggregatesBlock(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
What `aggregate` asked for, computed over the entries that match `since`, `until` and the `context` and column filters of the same call.
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
column: StrictStr = Field(description="The numeric column `avg`, `min`, `max` and `sum` were computed over. An empty text when only `count` was asked for. ")
|
|
31
|
+
tallies: List[CompositionEntryAggregateTally] = Field(description="One tally per value of `groupBy`, in the order of that column (a number as a number, `null` last), up to 200 groups; or ONE tally for the whole selection when no `groupBy` was asked for. Empty when `groupBy` was asked for and no entry matched. ")
|
|
32
|
+
truncated: Optional[StrictBool] = Field(default=None, description="True when more than 200 groups matched, so `tallies` lists the first 200 in that order. Absent otherwise. (Not to be mixed up with `moreGroups` on the reading, which is about the plain `tallies` of the whole table: those are 20 groups, largest first.) ")
|
|
33
|
+
__properties: ClassVar[List[str]] = ["column", "tallies", "truncated"]
|
|
34
|
+
|
|
35
|
+
model_config = ConfigDict(
|
|
36
|
+
populate_by_name=True,
|
|
37
|
+
validate_assignment=True,
|
|
38
|
+
protected_namespaces=(),
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def to_str(self) -> str:
|
|
43
|
+
"""Returns the string representation of the model using alias"""
|
|
44
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
45
|
+
|
|
46
|
+
def to_json(self) -> str:
|
|
47
|
+
"""Returns the JSON representation of the model using alias"""
|
|
48
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
49
|
+
return json.dumps(self.to_dict())
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
53
|
+
"""Create an instance of CompositionEntryAggregatesBlock from a JSON string"""
|
|
54
|
+
return cls.from_dict(json.loads(json_str))
|
|
55
|
+
|
|
56
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
57
|
+
"""Return the dictionary representation of the model using alias.
|
|
58
|
+
|
|
59
|
+
This has the following differences from calling pydantic's
|
|
60
|
+
`self.model_dump(by_alias=True)`:
|
|
61
|
+
|
|
62
|
+
* `None` is only added to the output dict for nullable fields that
|
|
63
|
+
were set at model initialization. Other fields with value `None`
|
|
64
|
+
are ignored.
|
|
65
|
+
"""
|
|
66
|
+
excluded_fields: Set[str] = set([
|
|
67
|
+
])
|
|
68
|
+
|
|
69
|
+
_dict = self.model_dump(
|
|
70
|
+
by_alias=True,
|
|
71
|
+
exclude=excluded_fields,
|
|
72
|
+
exclude_none=True,
|
|
73
|
+
)
|
|
74
|
+
# override the default output from pydantic by calling `to_dict()` of each item in tallies (list)
|
|
75
|
+
_items = []
|
|
76
|
+
if self.tallies:
|
|
77
|
+
for _item_tallies in self.tallies:
|
|
78
|
+
if _item_tallies:
|
|
79
|
+
_items.append(_item_tallies.to_dict())
|
|
80
|
+
_dict['tallies'] = _items
|
|
81
|
+
return _dict
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
85
|
+
"""Create an instance of CompositionEntryAggregatesBlock 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
|
+
"column": obj.get("column"),
|
|
94
|
+
"tallies": [CompositionEntryAggregateTally.from_dict(_item) for _item in obj["tallies"]] if obj.get("tallies") is not None else None,
|
|
95
|
+
"truncated": obj.get("truncated")
|
|
96
|
+
})
|
|
97
|
+
return _obj
|
|
98
|
+
|
|
99
|
+
|